导航:首页 > 文档加密 > ecb加密

ecb加密

发布时间:2022-01-24 08:07:54

Ⅰ iOS AES128 ECB加密 对字节数组而不是字符串怎么进行加密

// 开发中用到AES128加密、解密
#import <Foundation/Foundation.h>
#import <CommonCrypto/CommonCryptor.h>
@interface NSData (AES)
- (NSData *)AES128Operation:(CCOperation)operation key:(NSString *)key iv:(NSString *)iv;
- (NSData *)AES128EncryptWithKey:(NSString *)key iv:(NSString *)iv;
- (NSData *)AES128DecryptWithKey:(NSString *)key iv:(NSString *)iv;
@end

@implementation NSData (AES)
- (NSData *)AES128Operation:(CCOperation)operation key:(NSString *)key iv:(NSString *)iv
{
char keyPtr[kCCKeySizeAES128 + 1];
memset(keyPtr, 0, sizeof(keyPtr));
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];

char ivPtr[kCCBlockSizeAES128 + 1];
memset(ivPtr, 0, sizeof(ivPtr));
[iv getCString:ivPtr maxLength:sizeof(ivPtr) encoding:NSUTF8StringEncoding];

NSUInteger dataLength = [self length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);

size_t numBytesCrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(operation,
kCCAlgorithmAES128,
kCCOptionPKCS7Padding,
keyPtr,
kCCBlockSizeAES128,
ivPtr,
[self bytes],
dataLength,
buffer,
bufferSize,
&numBytesCrypted);
if (cryptStatus == kCCSuccess) {
return [NSData dataWithBytesNoCopy:buffer length:numBytesCrypted];
}
free(buffer);
return nil;
}

- (NSData *)AES128EncryptWithKey:(NSString *)key iv:(NSString *)iv
{
return [self AES128Operation:kCCEncrypt key:key iv:iv];
}

- (NSData *)AES128DecryptWithKey:(NSString *)key iv:(NSString *)iv
{
return [self AES128Operation:kCCDecrypt key:key iv:iv];
}
@end

int main(int argc, char const* argv[])
{
NSAutoreleasePool* pool;
pool = [[NSAutoreleasePool alloc] init];

NSString *key = [NSString stringWithCString:argv[1] encoding:NSUTF8StringEncoding];
NSString *iv = [NSString stringWithCString:argv[2] encoding:NSUTF8StringEncoding];
NSString *data_str = [NSString stringWithCString:argv[3] encoding:NSUTF8StringEncoding];
NSData *data = [data_str dataUsingEncoding:NSUTF8StringEncoding];

NSData *en_data = [data AES128EncryptWithKey:key iv:iv];
NSData *de_data = [en_data AES128DecryptWithKey:key iv:iv];

NSString *de_str = [[[NSString alloc] initWithData:de_data
encoding:NSUTF8StringEncoding] autorelease];

NSLog(@"%@", en_data);
NSLog(@"%@", de_str);

[pool drain];
return 0;
}

python中AES 用ECB模式加密之后为什么和C#加密之后的结果不一样

AES是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准。 AES的基本要求是,采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。1998年NIST开始AES第一轮分析、测试和征集

Ⅲ openssl des(ecb)加密模式的密钥输入问题

不用手动添加,des的密钥就是八位,12345678就可以。

Ⅳ 在DES加密里边,ECB和CBC有什么区别

一、优点不同:

ECB模式

1、简单;

2、有利于并行计算;

3、误差不会被传送;

CBC模式:

1、不容易主动攻击,安全性好于ECB,适合传输长度长的报文,是SSL、IPSec的标准。

二、缺点不同:

ECB模式

1、不能隐藏明文的模式;

2、可能对明文进行主动攻击;

CBC模式:

1、不利于并行计算;

2、误差传递;

3、需要初始化向量IV

三、概念不同

1、ECB模式又称电子密码本模式:Electronic codebook,是最简单的块密码加密模式,加密前根据加密块大小(如AES为128位)分成若干块,之后将每块使用相同的密钥单独加密,解密同理。

2、密码分组链接(CBC,Cipher-block chaining)模式,由IBM于1976年发明,每个明文块先与前一个密文块进行异或后,再进行加密。在这种方法中,每个密文块都依赖于它前面的所有明文块。同时,为了保证每条消息的唯一性,在第一个块中需要使用初始化向量IV。

(4)ecb加密扩展阅读:


1976年,IBM发明了密码分组链接(CBC,Cipher-block chaining)模式。在CBC模式中,每个明文块先与前一个密文块进行异或后,再进行加密。在这种方法中,每个密文块都依赖于它前面的所有明文块。同时,为了保证每条消息的唯一性,在第一个块中需要使用初始化向量。

若第一个块的下标为1,则CBC模式的加密过程为:

Ci = Ek (P ⊕ Ci-1), C0 = IV.

而其解密过程则为:

Pi = Dk (Ci) ⊕Ci-1, C0 = IV.

CBC是最为常用的工作模式。它的主要缺点在于加密过程是串行的,无法被并行化,而且消息必须被填充到块大小的整数倍。解决后一个问题的一种方法是利用密文窃取。

注意在加密时,明文中的微小改变会导致其后的全部密文块发生改变,而在解密时,从两个邻接的密文块中即可得到一个明文块。因此,解密过程可以被并行化,而解密时,密文中一位的改变只会导致其对应的明文块完全改变和下一个明文块中对应位发生改变,不会影响到其它明文的内容。



Ⅳ DES和AES加密的ECB模式到底有多脆弱,不能在商业项目中使用吗 - PHP进阶讨论

破解是相对的,如果开锁的代价大于箱子里面的东西,就没有必要去开锁了每个算法都有其适用的地方的des比较简单,运算快速,对机器要求小aes可防止传错,且加密后,体积不会太大,可用于传输大量数据

Ⅵ 即使分组加密算法是安全的,为什么说采用ecb方式加密依然存在不安全性

加密算法在传输过程中就会有数据报文输出,输入,这个过程中被嗅探工具探知以后,在大数据服务器上进行解密算法, 算出后,就可进行拦截,伪造,等手法,让你不知不觉中招,
所以说没有那种加密算法是完全安全的,只有不停的更新算法,才能保证不被破解。这是一个长期的工作, 只有一些国际企业才有这种实力,长期进行加密算法更新,ps(国际常用的加密算法也就那么几种,自己网络搜搜)

Ⅶ AES共有ECB,CBC,CFB,OFB,CTR五种模式分别有什么区别

转:
JCE中AES支持五中模式:CBC,CFB,ECB,OFB,PCBC;支持三种填充:NoPadding,PKCS5Padding,ISO10126Padding。不支持SSL3Padding。不支持“NONE”模式。

其中AES/ECB/NoPadding和我现在使用的AESUtil得出的结果相同(在16的整数倍情况下)。

不带模式和填充来获取AES算法的时候,其默认使用ECB/PKCS5Padding。

算法/模式/填充
16字节加密后数据长度 不满16字节加密后长度
AES/CBC/NoPadding
16
不支持
AES/CBC/PKCS5Padding
32
16
AES/CBC/ISO10126Padding
32
16
AES/CFB/NoPadding
16
原始数据长度
AES/CFB/PKCS5Padding
32
16
AES/CFB/ISO10126Padding
32
16
AES/ECB/NoPadding
16
不支持
AES/ECB/PKCS5Padding
32
16
AES/ECB/ISO10126Padding
32
16
AES/OFB/NoPadding
16
原始数据长度
AES/OFB/PKCS5Padding
32
16
AES/OFB/ISO10126Padding
32
16
AES/PCBC/NoPadding
16
不支持
AES/PCBC/PKCS5Padding
32
16
AES/PCBC/ISO10126Padding
32
16

可以看到,在原始数据长度为16的整数倍时,假如原始数据长度等于16*n,则使用NoPadding时加密后数据长度等于16*n,其它情况下加密数据长度等于16*(n+1)。在不足16的整数倍的情况下,假如原始数据长度等于16*n+m[其中m小于16],除了NoPadding填充之外的任何方式,加密数据长度都等于16*(n+1);NoPadding填充情况下,CBC、ECB和PCBC三种模式是不支持的,CFB、OFB两种模式下则加密数据长度等于原始数据长度。

java用3DES加密算法(ECB/PKCS5Padding)如何计算可以得到下面的结果

3DES需要的输入明文长度、密文长度都是8的整数倍。

而CBC.CFB都需要初始化向量的参数才能加密、解密、。

Ⅸ 编码 UTF8加密方式 AES 运算模式 ECB 填充模式 零字节组成的字符串 块大小 128(位)密文传输编码 BASE64

我找到了解决我的问题。为了使加密工作,而填充我不得不补充,而不是kCCOptionPKCS7Padding或kCCOptionECBMode均会被视为为0x0000。此外,如果需要被编码的数据不具有kCCKeySizeAES128的长度数倍(16),然后保存该数据的矢量必须被调整到具有多个长度与kCCKeySizeAES128并充满我加空格的空值。-(NSData*)AES128EncryptWithKey:(NSString*)key{charkeyPtr[kCCKeySizeAES128+1];bzero(keyPtr,sizeof(keyPtr));[keygetCString:keyPtrmaxLength:sizeof(keyPtr)encoding:NSUTF8StringEncoding];intdataLength=[selflength];intdiff=kCCKeySizeAES128-(dataLength%kCCKeySizeAES128);intnewSize=0;if(diff>0){newSize=dataLength+diff;}chardataPtr[newSize];memcpy(dataPtr,[selfbytes],[selflength]);for(inti=0;i

Ⅹ c#3des ecb加密模式需要iv吗

3DES的密钥不可能48bit吧,那安全性比普通DES更差。 密钥高于56bit 用相同的块操作模式CBC、ECB等 用相同的补齐方式,PKCS5/7 密钥用相同的散列函数或扩张函数。比如md5,sha1 各方面一致,c#,java#可以互转无误的。

阅读全文

与ecb加密相关的资料

热点内容
fib在python是什么意思 浏览:529
c调用命令行 浏览:938
阿里云服务器中没有apt 浏览:606
发送信息需要用户加密吗 浏览:634
六年级分数乘分数有几种算法 浏览:296
到哪里查自己的app账号 浏览:117
光大app点击哪里可以查年费 浏览:875
加密狗软件先安装还是先先后顺序 浏览:352
柱头加密区箍筋间距一般多少 浏览:681
美团商家版本服务中心在app哪里 浏览:987
androidgps调试 浏览:821
比心app怎么下载官方 浏览:48
安卓怎么隐藏手机上的app 浏览:580
hp光纤交换机命令 浏览:896
pythonhive导入数据 浏览:673
安卓手机屏幕按住一直抖怎么办 浏览:196
压缩率公式 浏览:323
蓝虎app怎么下载 浏览:616
周易江湖pdf 浏览:861
java取主机名 浏览:368