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

如何解密AES 256https://aesencryption.net/ -IOS,ios,encryption,aes,Ios,Encryption,Aes,纯文本:使用AES算法加密和解密文本 密钥(256):testsecret 结果():iFhSyFY3yYoO2G6GVGkdhZJjD+h0Pxv5fQnO3xIarzuGQSkIxlrpSprC5bC3gJ2U 我使用对象中的小代码来解密此文本: (NSData*)AES256DecryptWithKey:(NSString*)密钥{ //AES256的“键”应为32字节,否则将填充为空 char keyPtr[kCCKeySizeAES256+1];//为终止符预留的空间(未使用) bz

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

密钥(256):testsecret

结果():iFhSyFY3yYoO2G6GVGkdhZJjD+h0Pxv5fQnO3xIarzuGQSkIxlrpSprC5bC3gJ2U

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

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

    //获取关键数据 [key-getCString:keyPtr-maxLength:sizeof(keyPtr)编码:NSUTF8StringEncoding]

    NSU整数数据长度=[自身长度]

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

    size_t numbytes-secreted=0;//字符iv[KCCBlocksizeAEAS128+1];bzero(iv,sizeof(iv)); CCCryptorStatus cryptStatus=CCCrypt(kCCDecrypt,kCCAlgorithmAES,kCCOptionPKCS7Padding, keyPtr,kCCKeySizeAES256, NULL/*初始化向量(可选)/, [self bytes],数据长度,/input/ 缓冲区,缓冲区大小,/output*/ &不加密)

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

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

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

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

尝试使用Cryptlib库而不是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];
解密

NSString *encryptedData = [AESCrypt encrypt:message password:password];
NSString *message = [AESCrypt decrypt:encryptedData password:password];
希望这会有所帮助


此外,您可以看到以下答案:

您的CCCryptorStatus参数在osstatus中: 应该是这样的

cryptStatus=CCCrypt(kCCDecrypt、kCCAlgorithmAES128、KCcopionECBMode+KCcopionPKCS7padding、keyPtr、kCCKeySizeAES256 NULL、[self bytes]、数据长度、缓冲区、缓冲区大小和numbytes加密),


但是,密钥的长度小于16字节。至少要确保您的密钥应为16字节

我尝试过AESCrypt ObjC,解密时它总是返回零。我在这个链接中看到了攻击屏幕:请您先尝试加密一封示例邮件,然后再解密加密邮件。检查正在发生的情况。如果使用AESCrypt ObjC的加密-解密,它将工作(原始文本->加密纯文本-解密-原始文本)。但我想解密页面的结果,我想该网站使用了另一个库进行加密和解密。请查看我的另一个答案。我尝试过,但失败了,因为它无法解密结果,为什么你们会从一个连拼写都不正确,对密码一无所知的人那里复制密码或测试向量?将AES的块大小设置为128、192或256?使用密码而不是密钥?他们喝了什么?首先学习加密,这样你至少可以像该站点上显示的代码那样区分真实代码和垃圾代码。