iOS小笔记 | DES加密
2019-03-25 本文已影响0人
无夜之星辰
初次接触DES加密的人可能会懵逼,包括我,懵逼的主要原因是不知道有哪些参数。以前接触过MD5加密,很简单的一种加密方式,网上随便一搜,封装好的代码一大堆,随便copy一个都能用。虽然DES加密网上现成的代码也不少,但是由于其参数比较多,你若不了解其参数,别人提供的代码你将很难借鉴。
那如何快速了解DES加密所需参数?
很简单,网上随便找一个在线DES加密网站,如:http://tool.chacuo.net/cryptdes。
你会看到:

除了需要待加密文本,还需要:
- 加密模式
- 填充
- 密码(也就是所谓的key)
- 偏移量
- 输出
- 字符集
这些参数的具体值到底该怎么填?当然是问你们后台,或者直接把那个在线加密网站给他,让他加密一次。
OK,到这里你已经清楚DES加密需要哪些参数了,后面的就很简单了。
提供一个我用的:
/** DES加密 */
+ (NSString *)desEncryptWithString:(NSString *)plainText {
NSString *ciphertext = nil;
NSData *textData = [plainText dataUsingEncoding:NSUTF8StringEncoding];
NSUInteger dataLength = [textData length];
unsigned char buffer[1024 * 5];
memset(buffer, 0, sizeof(char));
size_t numBytesEncrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES,
kCCOptionPKCS7Padding | kCCOptionECBMode,
[@"你们的key" UTF8String],
kCCKeySizeDES,
[@"你们的偏移量" UTF8String],
[textData bytes], dataLength,
buffer, 1024,
&numBytesEncrypted);
if (cryptStatus == kCCSuccess) {
NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];
ciphertext = [data base64EncodedStringWithOptions:0];
}
return ciphertext;
}
如果想对参数有更多的了解,建议再看一下这篇文章: