Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

AES

在做热修复的时候,使用openssl对文件进行AES加密,然后使用OC进行解密,中间遇到了些坑,分享出来。

##Installation 只需拷贝Core/AES.{h.m}即可 ##Usage 使用方式如下:

NSString *test = [AES encryptAES:@"I'm AES" key:@"447C54BE3ACDFAF2E131B7657180D5AA" initialVector:nil keySize:kWMKeySizeAES128];
NSString *deTest = [AES decryptAES:test key:@"447C54BE3ACDFAF2E131B7657180D5AA" initialVector:nil keySize:kWMKeySizeAES128];
NSLog(@"%s:%@",__func__,deTest);

##注意点

以下:

  • OC中使用CCCrypt()方法进行加密,该方法只支持AES模式中的ECBCBC,因ECB安全性不高,故使用CBC模式
  • OC中使用CCCrypt()进行解密的时候,key,iv的转换都需要注意,openssl使用的是十六进制的数,而OC进行封装的时候,容易传入的是字符串,AES.{h.m}中已经进行了类似于"EBC"=>0xEBC这样的格式转换,开发者需注意该点。

##Openssl 使用Openssl进行文件加密命令如下:

//生成key和iv
$openssl enc -aes-128-cbc -k secret -P -md sha1
salt=08688003DD77B43B
key=4CE729B454CBE5DB751140EE2A3C3C44
iv =1EB526F904BE7EBDAF046ED75B2FFDC7
//进行加密
$openssl enc -aes-128-cbc -in test.file -out test.enc -K 4CE729B454CBE5DB751140EE2A3C3C44 -iv 1EB526F904BE7EBDAF046ED75B2FFDC7
//进行解密验证,-d 代表 解密
$openssl aes-128-cbc -d  -K 4CE729B454CBE5DB751140EE2A3C3C44 -iv 1EB526F904BE7EBDAF046ED75B2FFDC7 -in test.enc -out test.de

##Test 先用openssl对字符串进行AES加密:

$openssl enc -aes-128-cbc -k secret -P -md sha1
salt=08688003DD77B43B
key=4CE729B454CBE5DB751140EE2A3C3C44
iv =1EB526F904BE7EBDAF046ED75B2FFDC7
$echo "I'm Test" | openssl enc -aes-128-cbc -p -a -K 4CE729B454CBE5DB751140EE2A3C3C44 -iv 1EB526F904BE7EBDAF046ED75B2FFDC7
salt=78035160E07F0000
key=4CE729B454CBE5DB751140EE2A3C3C44
iv =1EB526F904BE7EBDAF046ED75B2FFDC7
HoP38q0t30OXkI1dEesILQ==

然后在OC中进行解密

NSString *deTest = [AES decryptAES:@"HoP38q0t30OXkI1dEesILQ==" key:@"4CE729B454CBE5DB751140EE2A3C3C44" initialVector:@"1EB526F904BE7EBDAF046ED75B2FFDC7" keySize:kWMKeySizeAES128];
NSLog(@"%s:%@",__func__,deTest);

运行工程发现输出如下:

AESExample:I'm AES

代码详见工程。

Author

WuShiHai, 408939786@qq.com

License

WMHotfix is available under the MIT license. See the LICENSE file for more info.

About

shell openssl encrypt, then oc decrypt.

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages