RSA和MD5加密
来源:互联网 发布:中国气象数据网吧 编辑:程序博客网 时间:2024/05/17 23:29
加密技术一般分为三类:对称加密、非对称加密和单向Hash技术。
非对称加密的代表是RSA,下面以一个实例说明RSA的加解密过程。
public static void main(String[] args) throws Exception {
String plainTest = "This is a secrecy";
byte[] utf8Array = plainTest.getBytes("UTF-8");
//首先生成一个RSA密钥对:
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(1024);
KeyPair key = keyGen.generateKeyPair();
//然后初始化RSA Cipher对象并加密
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
System.out.println("\n"+cipher.getProvider().getInfo());
cipher.init(Cipher.ENCRYPT_MODE, key.getPublic());
byte[] cipherText = cipher.doFinal(utf8Array);
System.out.println("-->"+new String(cipherText,"UTF-8"));
//通过如下代码解密cipherText密文
cipher.init(Cipher.DECRYPT_MODE, key.getPrivate());
byte[] newPlainText = cipher.doFinal(cipherText);
System.out.println("--->"+new String(newPlainText,"UTF-8"));
}
}
单向hash函数的典型代表 是MD5.
public class MD5 {
public static String create(String s) {
try {
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] byteArray = s.getBytes("ISO-8859-1");
byte[] md5Bytes = md5.digest(byteArray);
StringBuffer hexValue = new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++) {
int val = ((int) md5Bytes[i]) & 0xff;
if (val < 16)
hexValue.append("0");
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
System.out.println(MD5.create("This is a secrecy."));
}
}
当然,我们自己也可写一个简单的加密算法。
public class MyEncription {
public static String create(String s){
char[] array = s.toCharArray();
for (int i = 0; i < array.length; i++) {
array[i] = (char) (array[i]^20000);
}
return new String(array);
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入一个英文字符串或解密字符串");
String password = in.nextLine();
String newPass = MyEncription.create(password);
System.out.println("加密或解密结果如下:");
System.out.println(newPass);
}
}
- RSA和MD5加密
- RSA和MD5加密
- MD5加密和RSA加密
- android加密(md5和rsa)
- RSA MD5 加密
- 记录一下MD5和RSA的加密程序
- DES,RSA,MD5,AES加密
- VC实现数据的加密和解密(MD5加密/DES/RSA加密解密)
- MD5和RSA
- MD5和RSA
- MD5和RSA
- iOS加密方式:RSA DES MD5
- 数据加密(MD5,DES,RSA)简析
- RSA、DES 、AES、MD5加密、解密
- iOS - 加密 Base64 MD5 DES AES RSA
- java 加密技术AES、MD5、RSA
- 对称 非对称加密 RSA MD5 概念
- golang实现md5、RSA、base64 加密解密
- 笔记整理(java基础二---常量,变量...数组)
- 笔记整理(java基础三-------面向对象--封装)
- 关于int数组的选择和冒泡排序
- talk的登录函数
- ConcurrentHashMap之实现细节
- RSA和MD5加密
- 笔记整理(java基础四-----面向对象---继承)
- 由OJ提交结果联想到内存页面大小的一些小猜想
- 马士兵的经典名言!!!
- 黑马程序员-----笔记整理(java基础五-------面向对象--多态)
- 经典与智慧
- java举例大全
- 关于2.6.32在创建bus总线时的bus_id和.init_name的问题
- 。。。。。