iOS DES ECB 模式加密
//iOS DES ECB 模式加密
#import <CommonCrypto/CommonCryptor.h> static Byte iv[] = {,,,,,,,};
+(NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key
{
NSString *ciphertext = nil;
const char *textBytes = [plainText UTF8String];
NSUInteger dataLength = [plainText length];
unsigned char buffer[];
memset(buffer, , sizeof(char));
size_t numBytesEncrypted = ;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES,
kCCOptionECBMode|kCCOptionPKCS7Padding, //kCCOptionECBMode kCCOptionPKCS7Padding
[key UTF8String], kCCKeySizeDES,
iv,
textBytes, dataLength,
buffer, ,
&numBytesEncrypted);
if (cryptStatus == kCCSuccess) {
NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];
//NSLog(@"ssf:%s",buffer);
ciphertext = [ViewController base64Encoding:data];
// NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted];
// Byte* bb = (Byte*)[data bytes];
// ciphertext = [self parseByteArray2HexString:bb];
}
return ciphertext;
}
static const char encodingTable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+(NSString *)base64Encoding:(NSData*) text
{
if (text.length == )
return @"";
char *characters = malloc(text.length*/);
if (characters == NULL)
return @"";
int end = text.length - ;
int index = ;
int charCount = ;
int n = ;
while (index <= end) {
int d = (((int)(((char *)[text bytes])[index]) & 0x0ff) << )
| (((int)(((char *)[text bytes])[index + ]) & 0x0ff) << )
| ((int)(((char *)[text bytes])[index + ]) & 0x0ff);
characters[charCount++] = encodingTable[(d >> ) & ];
characters[charCount++] = encodingTable[(d >> ) & ];
characters[charCount++] = encodingTable[(d >> ) & ];
characters[charCount++] = encodingTable[d & ];
index += ;
if(n++ >= )
{
n = ;
characters[charCount++] = ' ';
}
}
if(index == text.length - )
{
int d = (((int)(((char *)[text bytes])[index]) & 0x0ff) << )
| (((int)(((char *)[text bytes])[index + ]) & ) << );
characters[charCount++] = encodingTable[(d >> ) & ];
characters[charCount++] = encodingTable[(d >> ) & ];
characters[charCount++] = encodingTable[(d >> ) & ];
characters[charCount++] = '=';
}
else if(index == text.length - )
{
int d = ((int)(((char *)[text bytes])[index]) & 0x0ff) << ;
characters[charCount++] = encodingTable[(d >> ) & ];
characters[charCount++] = encodingTable[(d >> ) & ];
characters[charCount++] = '=';
characters[charCount++] = '=';
}
NSString * rtnStr = [[NSString alloc] initWithBytesNoCopy:characters length:charCount encoding:NSUTF8StringEncoding freeWhenDone:YES];
return rtnStr;
}
iOS DES ECB 模式加密的更多相关文章
- C# DES (ECB模式) 加密解密 --单倍长
加密: 调用时: Encrypt_DES16("2AF349243535BCD3", "1111111111111111"); public static s ...
- Android DES加密的CBC模式加密解密和ECB模式加密解密
DES加密共有四种模式:电子密码本模式(ECB).加密分组链接模式(CBC).加密反馈模式(CFB)和输出反馈模式(OFB). CBC模式加密: import java.security.Key; i ...
- DES ECB 模式 JAVA PHP C# 实现 加密 解密 兼容
版本一: JAVA: import org.slf4j.Logger; import org.slf4j.LoggerFactory; import sun.misc.BASE64Decoder; i ...
- PHP实现DES/ECB/PKCS5Padding加密兼容Java SHA1PRNG算法
在使用php调用java接口时,遇到了两边加密结果不一致的问题.经过沟通发现接口方使用了SHA1PRNG算法,对原密码计算后做为Des的加密Key. 因此在php中也需要先对原密码做相应计算才能保持结 ...
- [转]<加密算法c#>——— 3DES加密之ECB模式 和 CBC模式
本文转自:http://www.cnblogs.com/qq278360339/archive/2013/06/05/3119222.html 最近 一个项目.net 要调用JAVA的WEB SERV ...
- DES加密ECB(模式) golang
Java默认DES算法使用DES/ECB/PKCS5Padding,而golang认为这种方式是不安全的,所以故意没有提供这种加密方式,那如果我们还是要用到怎么办?下面贴上golang版的DES EC ...
- iOS与PHP/Android AES128 ECB NoPadding加密
前言 谈谈AES加密,网上有很多的版本,当我没有真正在加密安全问题前,总以为百度出来某个AES加密算法就可以直接使用,实际上当我真正要做加密时,遇到了很多的坑,原来不是拿过来就能用的.写下本篇文章,记 ...
- AES中ECB模式的加密与解密(Python3.7)
本文主要解决的问题 本文主要是讲解AES加密算法中的ECB模式的加密解密的Python3.7实现.具体AES加密算法的原理这里不做过多介绍,想了解的可以参考文末的参考链接. 主要解决了两个问题: 在P ...
- 对称加密中的ECB模式&CBC模式
ECB模式: CBC模式: 所有的迭代模式:
随机推荐
- The main reborn ASP.NET MVC4.0: using CheckBoxListHelper and RadioBoxListHelper
The new Helpers folder in the project, to create the CheckBoxListHelper and RadioBoxListHelper class ...
- 无法打开物理文件 XXX.mdf",操作系统错误 5:"5(拒绝访问。)"的解决办法
http://blog.csdn.net/blackfield/article/details/6550499 用T-SQL命令附加数据库时,出现如下异常信息: 无法打开物理文件 XXX.mdf&qu ...
- myeclipse和eclipse的区别和联系,以及版本间的对应关系
Eclipse:IBM花了4千万美金来开发这个IDE(Integrated Development Environment).第一版1.0在2001年11月释出,随后逐渐受到欢迎.Eclipse已经成 ...
- LESS碎语
推荐在Brackets安装"LESS AutoCompile"插件,当保存less文件会自动生成或保存相应的css文件. 变量 以@开头声明变量,并且对变量进行分类,比如颜色变量. ...
- Android 程序目录介绍
还是回到 Eclipse 中,首先展开 HelloWorld 项目,你会看到如图 1.17 所示的目录结构. 图 1.17 一开始看到这么多陌生的东西,你一定会感到有点头晕吧.别担心,我现在就对上 ...
- Error opening wax scripts: loading wax stdlib: bad header in precompiled chunk
在64位ios操作系统中使用lua报错. Error opening wax scripts: loading wax stdlib: bad header in precompiled chunk ...
- Linux isql
登录Linux环境,执行 isql -s 命令,进入isql命令页面 进入后页面如下: 选择Query-Language回车,选项可进行数据库操作 进入后,选择要操作的数据库,回车 进行入数据库后的数 ...
- 在Android工程中加入AIDL文件时,gen目录生成的文件报错-问题解决
from://http://blog.csdn.net/watt520/article/details/10099047 今天在弄清除缓存的东东,按照网上别人的方法,创建了一个AIDL文件,这个时候发 ...
- (转载):ASCII,Unicode和UTF-8 编码
UTF-8是Unicode的一种实现方式,也就是它的字节结构有特殊要求,所以我们说一个汉字的范围是0X4E00到0x9FA5,是指unicode值,至于放在utf-8的编码里去就是由三个字节来组织,所 ...
- Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: connect timed out
问题: java连接不上redis. 异常信息: Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.ne ...