aes c android ios,AES加密在iOS和Android中产生不同的结果
嘗試使用AES128算法加密樣本數(shù)據(jù),在
Android和iOS中使用CBC和PKCS7填充,但結(jié)果不同:(
Android代碼:
private static final byte[] KEY = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10};
int srcBuffSiz = 1024;
byte[] srcBuff = new byte[srcBuffSiz];
Arrays.fill(srcBuff, (byte)0x01);
SecretKeySpec skeySpec = new SecretKeySpec(KEY, "AES");
Cipher ecipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
ecipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] dstBuff = ecipher.doFinal(srcBuff);
int bytesEncrypted = dstBuff.length;
iOS代碼:
// Source buffer
size_t srcBuffSiz = 1024;
unsigned char* srcBuff = new unsigned char[srcBuffSiz];
memset(srcBuff, 0x01, srcBuffSiz);
// Destination buffer
size_t dstBuffSiz = srcBuffSiz + 128;
unsigned char* dstBuff = new unsigned char[dstBuffSiz];
memset(dstBuff, 0x00, dstBuffSiz);
unsigned char keyPtr[kCCKeySizeAES128] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10};
size_t bytesEncrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding,
keyPtr, kCCKeySizeAES128,
NULL /* initialization vector (optional) */,
srcBuff, srcBuffSiz, /* input */
dstBuff, dstBuffSiz, /* output */
&bytesEncrypted);
因此,在這兩種情況下,我都試圖使用預(yù)定義的樣本密鑰加密樣本1024字節(jié)緩沖區(qū)(通常填充0x01值).
iOS中第一個(gè)和最后6個(gè)字節(jié)的加密緩沖區(qū):
ED CC 64 27 A8 99 ... 0C 44 9F EC 34 FC
Android中第一個(gè)和最后一個(gè)6字節(jié)的加密緩沖區(qū):
AE 65 A9 F7 7F 0E ... 1F BD AE 8B 85 ED
任何的想法?
如果我將Cipher.getInstance(“AES / CBC / PKCS7Padding”)替換為Cipher.getInstance(“AES”),那么加密緩沖區(qū)的前幾個(gè)字節(jié)將是相同的,但是從第17個(gè)字節(jié)開始……
iOS版:
ED CC 64 27 A8 99 DA 83 D5 4A B0 03 0F E7 DD A7 35 F2 50 5C 49 47 CC 3B 2F AB D1 61 05
安卓:
ED CC 64 27 A8 99 DA 83 D5 4A B0 03 0F E7 DD A7 ED CC 64 27 A8 99 DA 83 D5 4A B0 03 0F
總結(jié)
以上是生活随笔為你收集整理的aes c android ios,AES加密在iOS和Android中产生不同的结果的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小程序tabbar文字在服务器上不显示,
- 下一篇: linux lnmp yum版安装