ios java des解密_iOS 实现DES算法加密&解密

常用的加密方式很多,比如MD5,SHA,DES,AES,RSA等,主要分为两类,对称加密如DES,AES,非对称加密RSA,MD5,SHA,此外,MD5与SHA加密不可逆。

RSA加密比较安全,但是密文比较长,此外,HTTPS传输本身使用了RSA算法,这里我们主要用用DES加密一下缓存数据。

网上找了DES加密解密的算法。

/*字符串加密

*参数

*plainText : 加密明文

*key : 密钥 64位

*/

- (NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key

{

NSString *ciphertext = nil;

const charchar *textBytes = [plainText UTF8String];

NSUInteger dataLength = [plainText length];

size_t bufferPtrSize = (dataLength + kCCBlockSizeDES) & ~(kCCBlockSizeDES - 1);

unsigned char* buffer = (unsigned charchar *)malloc(bufferPtrSize);;

memset(buffer, 0, bufferPtrSize);

Byte iv[] = {1,2,3,4,5,6,7,8};

size_t numBytesEncrypted = 0;

CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES,

kCCOptionPKCS7Padding,

[key UTF8String], kCCKeySizeDES,

iv,

textBytes, dataLength,

buffer, bufferPtrSize,

&numBytesEncrypted);

if (cryptStatus == kCCSuccess) {

NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];

ciphertext = [[NSString alloc] initWithData:[data base64EncodedDataWithOptions:0] encoding:NSUTF8StringEncoding];

}

free(buffer);

return ciphertext;

}

//解密

- (NSString *) decryptUseDES:(NSString*)cipherText key:(NSString*)key

{

NSData* cipherData = [[NSData alloc] initWithBase64EncodedString:cipherText options:0];

NSUInteger dataLength = [cipherText length];

size_t bufferPtrSize = (dataLength + kCCBlockSizeDES) & ~(kCCBlockSizeDES - 1);

unsigned char* buffer = (unsigned charchar *)malloc(bufferPtrSize);;

memset(buffer, 0, bufferPtrSize);

size_t numBytesDecrypted = 0;

Byte iv[] = {1,2,3,4,5,6,7,8};

CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,

kCCAlgorithmDES,

kCCOptionPKCS7Padding,

[key UTF8String],

kCCKeySizeDES,

iv,

[cipherData bytes],

[cipherData length],

buffer,

bufferPtrSize,

&numBytesDecrypted);

NSString* plainText = nil;

if (cryptStatus == kCCSuccess) {

NSData* data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesDecrypted];

plainText = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

}

free(buffer);

return plainText;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值