object-c 和 java 可以通用的DES散列加密
来源:互联网 发布:java小数点保留两位 编辑:程序博客网 时间:2024/05/21 01:45
Java 加密和解密
public class CryPtor { /** * 加密 * @param datasource byte[] * @param password String * @return byte[] */ public static byte[] encrypt(byte[] datasource, String password) { try{ SecureRandom random = new SecureRandom(); DESKeySpec desKey = new DESKeySpec(password.getBytes()); //创建一个密匙工厂,然后用它把DESKeySpec转换成 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey securekey = keyFactory.generateSecret(desKey); //Cipher对象实际完成加密操作 Cipher cipher = Cipher.getInstance("DES"); //用密匙初始化Cipher对象 cipher.init(Cipher.ENCRYPT_MODE, securekey, random); //现在,获取数据并加密 //正式执行加密操作 return cipher.doFinal(datasource); }catch(Throwable e){ e.printStackTrace(); } return null; } /** * 解密 * @param src byte[] * @param password String * @return byte[] * @throws Exception */ public static byte[] decrypt(byte[] src, String password) throws Exception { // DES算法要求有一个可信任的随机数源 SecureRandom random = new SecureRandom(); // 创建一个DESKeySpec对象 DESKeySpec desKey = new DESKeySpec(password.getBytes()); // 创建一个密匙工厂 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); // 将DESKeySpec对象转换成SecretKey对象 SecretKey securekey = keyFactory.generateSecret(desKey); // Cipher对象实际完成解密操作 Cipher cipher = Cipher.getInstance("DES"); // 用密匙初始化Cipher对象 cipher.init(Cipher.DECRYPT_MODE, securekey, random); // 真正开始解密操作 return cipher.doFinal(src); } public static void main(String[] args) { // TODO Auto-generated method stub byte[] byts = CryPtor.encrypt("1234567".getBytes(), "1234abcde"); }}
object-c加密和解密
#import <CommonCrypto/CommonCryptor.h>#import "GTMBase64.h"@implementation CryptorModel/*字符串加密 *参数 *plainText : 加密明文 *key : 密钥 64位 */+ (NSString *) encryptUseDES:(NSString *)plainText key:(NSString *)key{ NSString *ciphertext = nil; const char *textBytes = [plainText UTF8String]; NSUInteger dataLength = [plainText length]; char buffer[1024]; memset(buffer, 0, sizeof(char)); //偏移向量没有用,我发现使用它无法解密,不知道为什么 Byte iv[] = {1,2,3,4,5,6,7,8}; size_t numBytesEncrypted = 0; CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmDES, kCCOptionECBMode|kCCOptionPKCS7Padding, [key UTF8String], kCCKeySizeDES, NULL, textBytes, dataLength, buffer, 1024, &numBytesEncrypted); if (cryptStatus == kCCSuccess) { NSData *data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesEncrypted]; for (int i = 0 ; i <numBytesEncrypted ; i ++ ) { printf("data %d\n" , buffer[i]); } ciphertext = [[NSString alloc] initWithData:[GTMBase64 encodeData:data] encoding:NSUTF8StringEncoding]; } return ciphertext;}//解密+ (NSString *) decryptUseDES:(NSString*)cipherText key:(NSString*)key{ NSData* cipherData = [GTMBase64 decodeString:cipherText]; unsigned char buffer[1024]; memset(buffer, 0, sizeof(char)); size_t numBytesDecrypted = 0; Byte iv[] = {1,2,3,4,5,6,7,8}; // Byte iv[] = {0x12,0x34,0x56,0x78,0x90,0xAB,0xCD,0xEF}; CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmDES, kCCOptionECBMode|kCCOptionPKCS7Padding, [key UTF8String], kCCKeySizeDES, NULL, [cipherData bytes], [cipherData length], buffer, 1024, &numBytesDecrypted); NSString* plainText = nil; if (cryptStatus == kCCSuccess) { NSData* data = [NSData dataWithBytes:buffer length:(NSUInteger)numBytesDecrypted]; plainText = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; } return plainText;}
阅读全文
1 0
- object-c 和 java 可以通用的DES散列加密
- PHP、JAVA、C#、Object-C 通用的DES加密
- PHP、JAVA、C#、Object-C 通用的DES加密
- PHP、JAVA、C#、Object-C 通用的DES加密
- PHP、JAVA、C#、Object-C 通用的DES加密
- PHP、JAVA、C#、Object-C、Android 通用的DES加密解密
- PHP、JAVA、C#、Object-C、Android 通用的DES加密解密【仅记录,未验证】
- Java 和 C#通用的DES加密工具类
- java通用的DES加密方法
- C/C++: 3DES-ECB模式加密,可以与C#和Java互通
- DES加密模板,和C#des加密
- Java 通用的DES加密工具类的实现
- java与.NET通用的3DES加密解密方法
- php、java、android、ios通用的3des加密方法
- DES 加密 与c#。ios 通用
- Unity DES AES加密数据 序列化和反序列化 通用方法
- java和javascript的des 加密
- JAVA/iOS/Android/PHP 通用DES 加密
- 分布式架构真正适用于大型互联网项目的架构! dubbo+zookeeper+springmvc+mybatis+shiro+redis
- Vizard学习第一天
- 搜索 G
- ubnt ER-X
- UVa 1626 括号序列——区间DP
- object-c 和 java 可以通用的DES散列加密
- c#学习之--类型与引用
- 创建ocfs2集群和增加节点
- POJ 1204 Word Puzzles 笔记
- Qt样式表
- 【工具】Source Insight 和 keil 中 Tab 键设置为4空格代替
- VLAN原理详解
- 初试KMP!
- 进制转换