导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
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. 希望大家帮忙。
----------------------------------------------
我打的是酱油,而不是别的什么油。 我灌的是口水,而不是别的什么水。 我聊的折腾不是那个不折腾的折腾。 我说的阿娇不是那个邓玉娇的阿娇。 3个代表,6个为什么,9个肠胃炎。 D性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
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性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
2017/7/24 22:45:18
2楼:
应该不是我弄的,因为我本身对这个也不熟悉,有代码估计也是我从网络上转出来的,抱歉!
----------------------------------------------
虽千万人吾往矣!
作者:
2017/7/25 8:25:37
3楼:
这个JAVA加密的 原文 tin198110242134 KEY Lqui\/lM+88DqGvgvAFpPhQ== 密文 F7qwx0QN5d\/R8r1SUJzQXg== 我现在用Delphi加密的值不同,当然也无法解密。
----------------------------------------------
我打的是酱油,而不是别的什么油。 我灌的是口水,而不是别的什么水。 我聊的折腾不是那个不折腾的折腾。 我说的阿娇不是那个邓玉娇的阿娇。 3个代表,6个为什么,9个肠胃炎。 D性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
2017/7/25 8:46:03
4楼:
楼主你 java 版,没写具体算法 例如 多少位的 CBC or ECB Padding 模式 key 的用法 都没说。
----------------------------------------------
(C)(P)Flying Wang
作者:
2017/7/25 10:24:06
5楼:
AES/CBC/PKCS5Padding 128位 KEY Lqui\/lM+88DqGvgvAFpPhQ==
----------------------------------------------
我打的是酱油,而不是别的什么油。 我灌的是口水,而不是别的什么水。 我聊的折腾不是那个不折腾的折腾。 我说的阿娇不是那个邓玉娇的阿娇。 3个代表,6个为什么,9个肠胃炎。 D性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
2017/7/25 10:41:43
6楼:
key 的用法不明。
----------------------------------------------
(C)(P)Flying Wang
作者:
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性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
2017/7/25 11:02:04
7楼:
key 的用法依然不明。
----------------------------------------------
(C)(P)Flying Wang
作者:
2017/7/25 11:06:59
8楼:
我空了,上传,JAVA 的SDK ,看 内部是怎么搞的
----------------------------------------------
我打的是酱油,而不是别的什么油。 我灌的是口水,而不是别的什么水。 我聊的折腾不是那个不折腾的折腾。 我说的阿娇不是那个邓玉娇的阿娇。 3个代表,6个为什么,9个肠胃炎。 D性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
2017/7/25 11:50:34
9楼:
不需要你传 SDK ,JAVA SDK 网上 多了 去了。 你 KEY 的用法,爱说不说,关我屁事。
----------------------------------------------
(C)(P)Flying Wang
作者:
2017/7/25 14:04:48
10楼:
key的用法,我也没有看到 进一步的说明。
----------------------------------------------
我打的是酱油,而不是别的什么油。 我灌的是口水,而不是别的什么水。 我聊的折腾不是那个不折腾的折腾。 我说的阿娇不是那个邓玉娇的阿娇。 3个代表,6个为什么,9个肠胃炎。 D性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
2017/7/25 14:20:20
11楼:
.NET 的 相关SDK
----------------------------------------------
我打的是酱油,而不是别的什么油。 我灌的是口水,而不是别的什么水。 我聊的折腾不是那个不折腾的折腾。 我说的阿娇不是那个邓玉娇的阿娇。 3个代表,6个为什么,9个肠胃炎。 D性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
2017/7/25 14:23:10
12楼:
JAVA的sdk,只包括部分相关的。 security就是 加密和解密 部分的。
----------------------------------------------
我打的是酱油,而不是别的什么油。 我灌的是口水,而不是别的什么水。 我聊的折腾不是那个不折腾的折腾。 我说的阿娇不是那个邓玉娇的阿娇。 3个代表,6个为什么,9个肠胃炎。 D性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
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性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
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性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
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
作者:
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性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
2017/7/25 17:01:07
17楼:
.NET SDK里 有 DLL的
----------------------------------------------
我打的是酱油,而不是别的什么油。 我灌的是口水,而不是别的什么水。 我聊的折腾不是那个不折腾的折腾。 我说的阿娇不是那个邓玉娇的阿娇。 3个代表,6个为什么,9个肠胃炎。 D性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
2017/7/25 17:11:19
18楼:
测试了下,稍作修改,可以解密加密的内容.(因为使用了DelphiXE,所以使用了Indy的Base64方法.)
----------------------------------------------
-
作者:
2017/7/25 17:14:02
19楼:
至于跟Java/.NET比, 楼主自己尝试一下不同的途径吧, 比如密钥 "Lqui\/lM+88DqGvgvAFpPhQ==" 看起来是Base64字串,是否应该解码之后使用? 以及其他需要考虑的地方.
----------------------------------------------
-
作者:
2017/7/25 17:15:17
20楼:
推荐一个网址, 做一些密码学测试很方便的. https://gchq.github.io/CyberChef
----------------------------------------------
-
作者:
2017/7/25 18:22:04
21楼:
有 DLL 还写了那么多的 cs ,这 DLL 大概也太底层了。 楼主,你还是叫 淘宝给你写一个 PAS 做接口吧。 你自己写不了。
----------------------------------------------
(C)(P)Flying Wang
作者:
2017/7/25 18:38:19
22楼:
cbc 模式有一个 叫 iv 的参数。 这个也是非常重要的。 楼主,你可以找 在线 AES 加密解密去看看。
----------------------------------------------
(C)(P)Flying Wang
作者:
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性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
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性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
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 是一样的。
此帖子包含附件: 大小: 50.8K
----------------------------------------------
(C)(P)Flying Wang
作者:
2017/7/26 11:20:52
26楼:
上图的密钥 原本输入是一致的。 只是 点了 加密 之后,网页自动刷新了一下,变了。
----------------------------------------------
(C)(P)Flying Wang
作者:
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性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
2017/7/26 11:26:36
27楼:
是的,那个网页刷新后,KEY最后 的 == 字符 不显示了
----------------------------------------------
我打的是酱油,而不是别的什么油。 我灌的是口水,而不是别的什么水。 我聊的折腾不是那个不折腾的折腾。 我说的阿娇不是那个邓玉娇的阿娇。 3个代表,6个为什么,9个肠胃炎。 D性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
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性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
2017/7/26 12:06:13
29楼:
楼主大骗子。 你在 23 楼写的 哪里有 JSON 这种东西? 和你 28 楼屁的关系!
----------------------------------------------
(C)(P)Flying Wang
作者:
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性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
2017/7/26 14:46:23
31楼:
你在3楼不是说有密码吗? 你用你的 JAVA 代码 试试,你密码对吗?
----------------------------------------------
(C)(P)Flying Wang
作者:
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性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
2017/7/26 14:57:24
32楼:
JAVA 代码不是我写的,是我从淘宝的 JAVA SDK里 摘录出来的,就是想看看大致是什么情况。
----------------------------------------------
我打的是酱油,而不是别的什么油。 我灌的是口水,而不是别的什么水。 我聊的折腾不是那个不折腾的折腾。 我说的阿娇不是那个邓玉娇的阿娇。 3个代表,6个为什么,9个肠胃炎。 D性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
2017/7/26 20:55:06
33楼:
现在,那个AES网站,我自己找的2个不同的AES Delphi例子计算的值都一样,说明代码内部问题不大了。 估计有 某个地方 和淘宝的 处理 有点不同。我继续咨询淘宝网。 比如 他们的base64 是不是 通用的,还是 专门修改过 了。 那个key,是不是要先 base64解码后再使用。
----------------------------------------------
我打的是酱油,而不是别的什么油。 我灌的是口水,而不是别的什么水。 我聊的折腾不是那个不折腾的折腾。 我说的阿娇不是那个邓玉娇的阿娇。 3个代表,6个为什么,9个肠胃炎。 D性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
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性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
2017/7/27 18:16:22
35楼:
楼主 3 楼 和 34 楼,到底 TMD KEY 是啥?
----------------------------------------------
(C)(P)Flying Wang
作者:
2017/7/27 19:07:00
36楼:
结果出来了。
此帖子包含附件: 大小: 14.1K
----------------------------------------------
(C)(P)Flying Wang
作者:
2017/7/27 19:08:39
37楼:
价值 500万人民币的代码,今天免费送你了。 文件名 AESCBC - taobao.zip
----------------------------------------------
(C)(P)Flying Wang
作者:
2017/7/27 21:21:46
38楼:
牛人
----------------------------------------------
-
作者:
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性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一
作者:
2017/7/31 8:41:54
39楼:
老子 37 楼的文件,是白传了。 建议楼主不要用。 否则,请缴纳 500万。
----------------------------------------------
(C)(P)Flying Wang
作者:
2017/8/16 8:19:42
40楼:
前2个星期,手受伤。 这次任务总算完成了,谢谢各位。 37楼的例子,我已经下载,感觉还是有用的,更全面。
----------------------------------------------
我打的是酱油,而不是别的什么油。 我灌的是口水,而不是别的什么水。 我聊的折腾不是那个不折腾的折腾。 我说的阿娇不是那个邓玉娇的阿娇。 3个代表,6个为什么,9个肠胃炎。 D性强的领导干部都不喜欢热比娅。 我特别要讲的是,屁民网黄色论坛是我经常上网必选的 网站之一