如何解密AES 256 https://aesencryption.net/-IOS

时间:2018-08-28 09:57:36

标签: ios encryption aes

纯文本:使用AES算法加密和解密文本

密钥(256):testsecret

结果(https://aesencryption.net/):iFhSyFY3yYoO2G6GVGkdhZJjD + h0Pxv5fQnO3xIarzuGQSkIxlrpSprC5bC3gJ2U

我在对象中使用小的代码来解密此文本:

  
      
  • (NSData *)AES256DecryptWithKey:(NSString *)key {   //对于AES256,“密钥”应为32个字节,否则为空值   char keyPtr [kCCKeySizeAES256 + 1]; //终结符的空间(未使用)   bzero(keyPtr,sizeof(keyPtr)); //用零填充(用于填充)

         

    //获取密钥数据   [key getCString:keyPtr maxLength:sizeof(keyPtr)encoding:NSUTF8StringEncoding];

         

    NSUInteger dataLength = [自身长度];

         

    //请参阅文档:对于分组密码,输出大小将始终小于或   //等于输入大小加上一个块的大小。   //这就是为什么我们需要在此处添加一个块的大小   size_t bufferSize = dataLength + kCCBlockSizeAES128;   void * buffer = malloc(bufferSize);

         

    size_t numBytesDecrypted = 0; // char iv [kCCBlockSizeAES128 + 1]; bzero(iv,sizeof(iv));   CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt,kCCAlgorithmAES,kCCOptionPKCS7Padding,                                         keyPtr,kCCKeySizeAES256,                                         NULL / *初始化向量(可选) /,                                         [自身字节],dataLength,/ 输入 /                                         缓冲区,bufferSize,/ 输出* /                                         &numBytesDecrypted);

         

    如果(cryptStatus == kCCSuccess)   {       //返回的NSData拥有缓冲区的所有权,并在释放时释放它       返回[NSMutableData dataWithBytesNoCopy:buffer length:numBytesDecrypted];   }

         

    free(缓冲区); //释放缓冲区;   返回零; }

  •   

结果:使用AES算法的t \ PFLFC \ ^ X \ ^ C ^ \ ^^ \ ^ RWQV \ ^ \ ypt文本

似乎总是错误的第一个16位块。你能帮我吗。加密时我错了什么?

2 个答案:

答案 0 :(得分:0)

尝试使用AESCrypt-ObjC代替Cryptlib库。

安装

将此行添加到您的班级:

#import "AESCrypt.h"

用法

NSString *message = @"top secret message";
NSString *password = @"p4ssw0rd";

加密

NSString *encryptedData = [AESCrypt encrypt:message password:password];

解密

NSString *message = [AESCrypt decrypt:encryptedData password:password];

希望这会有所帮助。

此外,您还可以看到以下答案:https://stackoverflow.com/a/51767050/5167909

答案 1 :(得分:0)

使用CommonCrypto并确保您传递参数,作为回报,您将获得kCCSuccess。

仔细阅读CommonCrypto文档,您肯定会找到想要的东西。