DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: hebhanax
今日帖子: 49
在线用户: 13
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/24 21:26:34
标题:
请教 looper的AES/CBC/PKCS5Padding算法例子,改Base64编码的问题 浏览:4035
加入我的收藏
楼主: 好像是盒子上下载到的 looper_20175311610.zip

例子本身的加密返回值和解密字符都是用十六进制,我现在要Base64编码。

所以,引用System.NetEncoding

相应修改2个函数的有关代码,但是 加密后 无法解密,不知道错误在哪里?IDE是 Berlin up2版

TCipherType = (ctBase64, ctHex);

加密          
Memo2.Lines.Add(EncryptString(Memo1.Text, Edit2.Text, kb128, amCBC, PKCS5Padding, Edit1.Text, ctBase64));

解密
Memo3.Lines.Add(DecryptString(Trim(Memo2.Text), Edit2.Text, kb128, amCBC, PKCS5Padding, Edit1.Text, ctBase64));

EncryptString 部分

    if CipherType = ctHex then
      Result := StrToHex(str)
    else
      Result := TNetEncoding.Base64.Encode(str)

DecryptString 部分
  if CipherType = ctHex then
    str := HexToStr(Value)
  else
    str := TNetEncoding.Base64.Decode(Value);


报错误
Invalid buffer size for decryption.

希望大家帮忙。
此帖子包含附件:xlonger_2017724212634.zip 大小:68.0K
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/24 21:45:33
1楼: procedure DecryptAESStreamCBC(Source: TStream; Count: cardinal;
  const ExpandedKey: TAESExpandedKey128;  const InitVector: TAESBuffer;
  Dest: TStream);
var
  TempIn, TempOut: TAESBuffer;
  Vector1, Vector2: TAESBuffer;
  Done: cardinal;
begin
  if Count = 0 then
  begin
    Source.Position := 0;
    Count := Source.Size;
  end
  else Count := Min(Count, Source.Size - Source.Position);
  if Count = 0 then exit;
  if (Count mod SizeOf(TAESBuffer)) > 0 then
    raise EAESError.Create(SInvalidInBufSize);//这里报错
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 looper (keyo) ★☆☆☆☆ -
盒子活跃会员
2017/7/24 22:45:18
2楼: 应该不是我弄的,因为我本身对这个也不熟悉,有代码估计也是我从网络上转出来的,抱歉!
----------------------------------------------
虽千万人吾往矣!
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/25 8:25:37
3楼: 这个JAVA加密的

原文
tin198110242134

KEY
Lqui\/lM+88DqGvgvAFpPhQ==

密文
F7qwx0QN5d\/R8r1SUJzQXg==


我现在用Delphi加密的值不同,当然也无法解密。
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/7/25 8:46:03
4楼: 楼主你 java 版,没写具体算法
例如 多少位的
CBC or ECB 
Padding 模式
key 的用法
都没说。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/25 10:24:06
5楼: AES/CBC/PKCS5Padding 128位

KEY
Lqui\/lM+88DqGvgvAFpPhQ==
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/7/25 10:41:43
6楼: key 的用法不明。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/25 10:52:47
6楼: 我也在研究   wang_80919 (Flying Wang) 的例子

tin198110242134 加密后是 mo5ad6lOjhr1TslnuQK7nA==

java里 是要求 PKCS5Padding  

你用的 pmPKCS5or7Padding,不知道是否有 差异?
  TPaddingMode = (pmZeroPadding, pmPKCS5or7Padding, pmISO10126, pmPKCS5or7RandomPadding);


function AESEncryptStrToBase64(Value, Key: string; StrEncoding: TEncoding = nil;
  KeyEncoding: TEncoding = nil; KeyBit: TKeyBit = kb128;
  InitVectorStr: string = '';
  APaddingMode: TPaddingMode = TPaddingMode.pmPKCS5or7Padding; CBCMode: Boolean = True;
  ValueCRLFMode: TCRLFMode = rlCRLF;
  KeyCRLFMode: TCRLFMode = rlCRLF;
  OnProcessProc: TOnProcessProc = nil; ProcessProc: TProcessProc = nil): string;
begin
  Result := EncodeBase64Bytes(AESEncryptStr(Value, Key, StrEncoding, KeyEncoding, KeyBit, InitVectorStr,
    APaddingMode, CBCMode, ValueCRLFMode,
    KeyCRLFMode, OnProcessProc, ProcessProc));
end;
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/7/25 11:02:04
7楼: key 的用法依然不明。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/25 11:06:59
8楼: 我空了,上传,JAVA 的SDK ,看 内部是怎么搞的
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/7/25 11:50:34
9楼: 不需要你传 SDK ,JAVA SDK 网上 多了 去了。
你 KEY 的用法,爱说不说,关我屁事。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/25 14:04:48
10楼: key的用法,我也没有看到 进一步的说明。
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/25 14:20:20
11楼: .NET 的 相关SDK
此帖子包含附件:xlonger_2017725142020.rar 大小:12.0K
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/25 14:23:10
12楼: JAVA的sdk,只包括部分相关的。

security就是 加密和解密 部分的。
此帖子包含附件:xlonger_2017725142330.zip 大小:1.70M
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/25 16:06:17
13楼: . 自研的SDK注意事项:

1 .  加密算法要求:AES/CBC/PKCS5Padding。
2 .  获取密钥的缓存是否只应该放在内存中,在服务启动后从接口拉取。
禁止存放在数据库、硬盘文件、OSS等持久化存储的地方。
3 .  模糊查询部分功能,如不使用,可不实现。
4 .  设置密钥的过期时间,过期重新拉取。
秘钥的过期时间,在获取秘钥的接口会返回的,控制权在于top服务端。秘钥获取接       口 :taobao.top.secret.get
5 .  请回传密钥的加密、解密调用次数。
具体标准:加、解密调用函数每次调用,对应的计数器(各种类型计数器)会+1,5分钟    左右同步一次。异步线程会把计数器同步到top api接口:    taobao.top.sdk.feedback.upload。
开发可以参考其他sdk代码

建议:加密解密实现参考其他语言版本的SDK(java/.NET/php)
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/25 16:07:49
14楼: http://open.taobao.com/docs/doc.htm?spm=a219a.7629140.0.0.TL6iPP&treeId=1&articleId=106214&docType=1
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/7/25 16:35:13
15楼: 楼主依然没说 KEY 是如何产生,如何使用的。所以没有结果活该。

看了楼上的内容,只能说。
请 楼主 直接调用 淘宝 SDK。
叫淘宝给你一个 DLL 或 COM 的 SDK。
不要 .NET 和 JAVA 的。
不过,我听说 DELPHI 支持调用 .net 的 组件,具体不知道。你这 .net 的是代码,不是组件。

DLEPHI 也可以调用 JAR。但是 太麻烦,能累死人。

所以,还是 DLL 或 COM 的 SDK 最方便了。

但是,如果淘宝的这个 jar 支持手机,而你的程序,也是手机的话,就可以调用 JAR 了。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/25 16:50:17
16楼: KEY是 通过 秘钥获取接口 :taobao.top.secret.get 取得的。

响应:
{"top_secret_get_response":{"interval":100000,"max_interval":100600,"secret":"Lqui\/lM+88DqGvgvAFpPhQ==","secret_version":1,"request_id":"101zahrgyo6x8"}}

接口文档
http://open.taobao.com/docs/api.htm?spm=a219a.7629065.0.0.GW0ybe&apiId=26567
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/25 17:01:07
17楼: .NET SDK里  有 DLL的
此帖子包含附件:xlonger_20177251716.rar 大小:276.4K
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 jiucenglou (九层楼) ★☆☆☆☆ -
普通会员
2017/7/25 17:11:19
18楼: 测试了下,稍作修改,可以解密加密的内容.(因为使用了DelphiXE,所以使用了Indy的Base64方法.)
此帖子包含附件:jiucenglou_2017725171117.rar 大小:1.58M
----------------------------------------------
-
作者:
男 jiucenglou (九层楼) ★☆☆☆☆ -
普通会员
2017/7/25 17:14:02
19楼: 至于跟Java/.NET比, 楼主自己尝试一下不同的途径吧, 比如密钥 "Lqui\/lM+88DqGvgvAFpPhQ==" 看起来是Base64字串,是否应该解码之后使用? 以及其他需要考虑的地方.
----------------------------------------------
-
作者:
男 jiucenglou (九层楼) ★☆☆☆☆ -
普通会员
2017/7/25 17:15:17
20楼: 推荐一个网址, 做一些密码学测试很方便的.
https://gchq.github.io/CyberChef
----------------------------------------------
-
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/7/25 18:22:04
21楼: 有 DLL 还写了那么多的 cs ,这 DLL 大概也太底层了。
楼主,你还是叫 淘宝给你写一个 PAS 做接口吧。
你自己写不了。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/7/25 18:38:19
22楼: cbc 模式有一个 叫 iv 的参数。
这个也是非常重要的。

楼主,你可以找 在线 AES 加密解密去看看。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/26 9:30:15
23楼:     /**
     * 生成密文数据
     * 
     * @param data
     * @param separator
     * @param secretContext
     * @return
     * @throws SecretException
     */
    public static String encryptNormal(String data, String separator, SecretContext secretContext) throws SecretException {
        return separator + TaobaoUtils.aesEncrypt(data, secretContext.getSecret()) + separator + secretContext.getSecretVersion()
          + separator;
    }


TaobaoUtils.aesEncrypt:
    public static String aesEncrypt(String content, byte[] encryptKey) throws SecretException {
        try {
          return aesEncrypt(content.getBytes(Constants.CHARSET_UTF8), encryptKey);
        } catch (Exception e) {
          throw new SecretException(e);
        }
    }


/**
     * AES加密
     * 
     * @param content
     *          待加密的内容
     * @param encryptKey
     *          加密密钥
     * @return 加密后的byte[]
     * @throws SecretException
     */
    public static String aesEncrypt(byte[] content, byte[] encryptKey) throws SecretException {
        try {
          KeyGenerator kgen = KeyGenerator.getInstance(AES);
          kgen.init(new SecureRandom(encryptKey));

          IvParameterSpec iv = new IvParameterSpec(IV_BYTES);
          Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
          cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey, AES), iv);

          return base64Encode(cipher.doFinal(content));
        } catch (Exception e) {
          throw new SecretException(e);
        }
    }


public abstract class TaobaoUtils {
    private static final byte[] IV_BYTES = "0102030405060708".getBytes(); //这里就是 22楼说的 IV 吧
    private static final String AES = "AES";
    private static String intranetIp;
    private static final String MAC_HMAC_MD5 = "HmacMD5";
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/26 9:33:07
24楼: /**
     * AES解密
     * 
     * @param content
     *          待解密的byte[]
     * @param decryptKey
     *          解密密钥
     * @return 解密后的byte
     * @throws SecretException
     */
    public static String aesDecrypt(String content, byte[] decryptKey) throws SecretException {
        try {
          return new String(aesDecrypt(content.getBytes(Constants.CHARSET_UTF8), decryptKey), Constants.CHARSET_UTF8);
        } catch (Exception e) {
          throw new SecretException(e);
        }
    }

    /**
     * AES解密
     * 
     * @param encryptBytes
     *          待解密的byte[]
     * @param decryptKey
     *          解密密钥
     * @return 解密后的byte
     * @throws SecretException
     */
    public static byte[] aesDecrypt(byte[] encryptBytes, byte[] decryptKey) throws SecretException {
        IvParameterSpec iv = new IvParameterSpec(IV_BYTES);
        Cipher cipher;
        try {
          cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
          cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey, AES), iv);
          return cipher.doFinal(Base64.decode(encryptBytes));
        } catch (Exception e) {
          throw new SecretException(e);
        }
    }
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/7/26 10:50:28
25楼: iv := '0102030405060708'

目前 DELPHI 的结果和 在线的结果也是不一样的。
在线的结果和楼主的结果也是不一样的。


http://www.seacha.com/tools/aes.html?src=tin198110242134&mode=CBC&keylen=128&key=Lqui%5C%2FlM%2B88DqGvgvAFpPhQ%3D%3D&iv=0102030405060708&bpkcs=pkcs5padding&session=xfwdJD3J6fsmnWZlUjHE&aes=ef09a0fe83340e73b1c2082c4fc5d3da&encoding=base64&type=0
这个地址的 结果 和我的 DELPHI 是一样的。
此帖子包含附件:
PNG 图像
大小:50.8K
----------------------------------------------
(C)(P)Flying Wang
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/7/26 11:20:52
26楼: 上图的密钥 原本输入是一致的。
只是 点了 加密 之后,网页自动刷新了一下,变了。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/26 11:22:33
25楼: http://www.seacha.com/tools/aes.html

以前没有注意到 IV 这个 密钥偏移量 的问题,现在从 JAVA SDK里 取得正确的值0102030405060708了。 

现在Delphi 加密后的值和 这个网站一致了,当然也能相互解密了。
原文 tin198110242134 
密文 xwKTPHJKSyJ60cWBl06M7g==


但是 和淘宝返回的密文 F7qwx0QN5d\/R8r1SUJzQXg==

还是 不符,感觉 目标越来越近了。
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/26 11:26:36
27楼: 是的,那个网页刷新后,KEY最后 的 == 字符 不显示了
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/26 11:28:04
28楼: 淘宝返回
{"logistics_orders_detail_get_response":{"shippings":{"shipping":[{"buyer_nick":"~F7qwx0QN5d\/R8r1SUJzQXg==~1~","sub_tids":{}}]},"request_id":"qm4fqeqi8h89"}}  

非手机号码密文形式: ~密文~版本号~

所以, F7qwx0QN5d\/R8r1SUJzQXg== 是密文
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/7/26 12:06:13
29楼: 楼主大骗子。
你在 23 楼写的 哪里有 JSON 这种东西?
和你 28 楼屁的关系!
----------------------------------------------
(C)(P)Flying Wang
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/26 14:41:58
30楼: 23楼 是JAVA的 SDK源码,包括加密的代码,我从这里发现了
IvParameterSpec iv = new IvParameterSpec(IV_BYTES);
然后从TaobaoUtils里找到了
    private static final byte[] IV_BYTES = "0102030405060708".getBytes(); //这里就是 22楼说的 IV 吧

如果没有这个正确的IV值 ,Delphi加密后的值与JAVA加密的值一定不一致了。

28楼,JSON,是 接口返回的,其中的buyer_nick 值F7qwx0QN5d\/R8r1SUJzQXg==就是明文 tin198110242134 JAVA用 AES加密后的。

我现在 是需要解密 F7qwx0QN5d\/R8r1SUJzQXg== 得到 tin198110242134
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/7/26 14:46:23
31楼: 你在3楼不是说有密码吗?
你用你的 JAVA 代码 试试,你密码对吗?
----------------------------------------------
(C)(P)Flying Wang
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/26 14:51:52
31楼: 咨询 淘宝的情况

标题:接口返回的密文 无法解密
提交于: 2017-07-26 11:50:28

AES在线加密,解密网站
http://www.seacha.com/tools/aes.html

响应:
{"logistics_orders_detail_get_response":{"shippings":{"shipping":[{"buyer_nick":"~F7qwx0QN5d\/R8r1SUJzQXg==~1~","sub_tids":{}}]},"request_id":"qm4fqeqi8h89"}}    

buyer_nick 原文 tin198110242134

KEY:
{"top_secret_get_response":{"interval":100000,"max_interval":100600,"secret":"Lqui\/lM+88DqGvgvAFpPhQ==","secret_version":1,"request_id":"101zahrgyo6x8"}}

JAVA SDK里 密钥偏移量是:0102030405060708

​其他加密选项都选的对的。

我自己的Delphi程序 加密的 结果是 xwKTPHJKSyJ60cWBl06M7g== 和那个网页 计算一样,也能相互解密。

​请教一下,大概是什么原因?

回复:
您好:
     加补码了吗? 
技术支持
2017-07-26 14:09:35
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/26 14:57:24
32楼: JAVA 代码不是我写的,是我从淘宝的 JAVA SDK里 摘录出来的,就是想看看大致是什么情况。
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/26 20:55:06
33楼: 现在,那个AES网站,我自己找的2个不同的AES Delphi例子计算的值都一样,说明代码内部问题不大了。

估计有 某个地方 和淘宝的 处理 有点不同。我继续咨询淘宝网。

比如 他们的base64 是不是 通用的,还是 专门修改过 了。

那个key,是不是要先 base64解码后再使用。
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/27 18:03:03
34楼: 研究几天,有点明白关键的地方了。

淘宝回复:

加密和解密算法函数里的key参数,要用byte类型,不能用字符串类型。

因为,接口返回的base64字符key: zTu5kjPcZcdp9boEJ0/pGg==
需要先base64解码为byte类型,然后传给 加密和解密算法函数。

所以,现在的关键是,AES的算法例子要改写一下。

算法:AES/CBC/PKCS5Padding 128bit
IV密钥偏移量值:0102030405060708
结果编码:base64

明文 tin198110242134

接口返回的base64字符key: zTu5kjPcZcdp9boEJ0/pGg==
需要先base64解码为byte类型,然后传给加密和解密算法函数。

密文 F7qwx0QN5d/R8r1SUJzQXg==
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/7/27 18:16:22
35楼: 楼主 3 楼 和 34 楼,到底 TMD KEY 是啥?
----------------------------------------------
(C)(P)Flying Wang
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/7/27 19:07:00
36楼: 结果出来了。
此帖子包含附件:
PNG 图像
大小:14.1K
----------------------------------------------
(C)(P)Flying Wang
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/7/27 19:08:39
37楼: 价值 500万人民币的代码,今天免费送你了。

文件名
AESCBC - taobao.zip
此帖子包含附件:wang_80919_201772719839.zip 大小:8.3K
----------------------------------------------
(C)(P)Flying Wang
作者:
男 ksrsoft (cb168) ★☆☆☆☆ -
普通会员
2017/7/27 21:21:46
38楼: 牛人
----------------------------------------------
-
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/7/27 21:24:12
38楼: 3楼是我一开始犯了2个错误,
 1、直接从JSON字符里复制,不巧,里面有个\转义的字符,当然错了。
 2、调用top_secret_get接口时,一开始未传app的session(因为我第一次用https的接口URL + session时好像报错,提示session授权方式不对),返回的是app纬度的base64编码的KEY Lqui/lM+88DqGvgvAFpPhQ== ,这种KEY只能解密分销的订单数据。

经过小二提醒,
1、是先superobject解析后取值,这个是低级错误。
2、用https的接口URL + session(今天既然不报错了,奇怪。),才能返回app下某个店铺纬度的base64编码的KEY zTu5kjPcZcdp9boEJ0/pGg== ,才能解密接口返回的普通店铺订单密文。

然后,经过咨询,接口返回的KEY,是需要base64解码后才能使用。

最后,折腾半天,才明白base64解码后,只能解成byte类型,不能再转成string类型了,因为淘宝的服务端把byte的顺序故意进行打乱过了,当然没法转成可以阅读的字符了。再回想JAVA SDK,加密和解密函数的key参数,都是byte类型的。

Flying Wang的例子,我自己改了一下
2个地方,
  KeyBytes := TNetEncoding.Base64.DecodeStringToBytes(Key);//KeyEncoding.GetBytes(Key);

成功。

总结,淘宝的文档,写得也不清楚,具体。自己又是菜鸟,闹了不少笑话。谢谢楼上Flying Wang等各位的帮助。
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/7/31 8:41:54
39楼: 老子 37 楼的文件,是白传了。
建议楼主不要用。
否则,请缴纳 500万。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 xlonger (xlonger) ★☆☆☆☆ -
普通会员
2017/8/16 8:19:42
40楼: 前2个星期,手受伤。

这次任务总算完成了,谢谢各位。

37楼的例子,我已经下载,感觉还是有用的,更全面。
----------------------------------------------
我打的是酱油,而不是别的什么油。
我灌的是口水,而不是别的什么水。
我聊的折腾不是那个不折腾的折腾。
我说的阿娇不是那个邓玉娇的阿娇。
3个代表,6个为什么,9个肠胃炎。
D性强的领导干部都不喜欢热比娅。
我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行242.1875毫秒 RSS