1、Java编程和android移动开发通用的常见加密算法Java编程android移动开发通用常见加密算法和摘要算法By 174997990 第一部分: 测试代码,复制到项目即可.注意类名import java.io.IOException;import java.security.PrivateKey;import java.security.PublicKey;public class Main /* * param args * throws Exception * throws IOException */ public static void main(String args) thr
2、ows Exception String oldString, encodeString, decodeString, keyString; byte encodeBytes, decodeBytes; oldString = 汉a字a喊喊!#$%&*()-=+_?:;| 喊汉a字a喊喊 喊汉a字a喊喊 喊 汉a字a喊喊!#$%&*()-=+_?:;| 喊汉a字a喊喊 喊汉a字a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;| 喊汉a字a喊喊 喊汉a字a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;| 喊汉a字a喊喊 喊汉a字a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;| 喊汉
3、a字a喊喊 喊汉a字a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;| 喊汉aQQ:174997990字a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;| 喊汉a字a喊喊 喊汉a字a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;| 喊汉a字a喊喊 喊汉a字a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;| 喊汉a字a喊喊 喊汉a字a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;| 喊汉a字a喊喊 喊汉a字a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;| 喊汉a字syd168a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;| 喊汉a字a喊喊 喊汉a字a喊喊 喊汉a字
4、a喊喊!#$%&*()-=+_?:;| 喊汉a字a喊喊 喊汉a字a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;| 喊汉a字a喊喊 喊汉a字a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;| 喊汉a字a喊喊 喊汉a字a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;| 喊汉a字a喊喊 喊汉a字a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;| 喊汉a字a喊喊 喊汉a字a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;| 喊汉a字a喊喊 喊汉a字a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;| 喊汉a字a喊喊 喊汉a字a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;|
5、喊汉a字a喊喊 喊汉a字a喊喊 喊汉a字a喊喊!#$%&*()-=+_?:;| 喊汉a字a喊喊 喊汉a字a喊喊 喊; System.out.println(=designed by 174997990=); /测试Base64编码 System.out.println(=Base64 test=); encodeString = MyEncryption.Base64.encode(oldString.getBytes(); /以系统默认编码方式转换为字节数组 byte bb = MyEncryption.Base64.decode(encodeString); /返回的字符串就是系统默认编码
6、 decodeString = new String(bb); System.out.println(原始字符串 = + oldString); System.out.println(Base64编码= + encodeString); System.out.println(Base64解码= + decodeString); System.out.println(解码后和原串= + (decodeString.equals(oldString) ? 完全一样 : 不同); /测试DES加密 System.out.println(n=DES encrypy test=); keyString
7、= 01234567; encodeString = MyEncryption.MyDES.encryptDES(oldString, keyString); decodeString = MyEncryption.MyDES.decryptDES(encodeString, keyString); decodeString = new String(decodeString.getBytes(); System.out.println(原始字符串 = + oldString); System.out.println(DES加密后 = + encodeString); System.out.p
8、rintln(DES解密后 = + decodeString); System.out.println(解密后和原串= + (decodeString.equals(oldString) ? 完全一样 : 不同); /测试3DES加密 keyString = abcdefghigk; System.out.println(n=3DES encrypy test=); encodeString = MyEncryption.My3DES.encrypt3DES(oldString, keyString); decodeString = MyEncryption.My3DES.decrypt3DE
9、S(encodeString, keyString); decodeString = new String(decodeString.getBytes(); System.out.println(原始字符串 = + oldString); System.out.println(3DES加密后 = + encodeString); System.out.println(3DES解密后 = + decodeString); System.out.println(解密后和原串= + (decodeString.equals(oldString) ? 完全一样 : 不同); /测试AES加密 keyS
10、tring = abcdefsdfsdfghigk; System.out.println(n=AES encrypy test=); encodeString = MyEncryption.MyAES.encryptAES(oldString, keyString); decodeString = MyEncryption.MyAES.decryptAES(encodeString, keyString); decodeString = new String(decodeString.getBytes(); System.out.println(原始字符串 = + oldString); S
11、ystem.out.println(AES加密后 = + encodeString); System.out.println(AES解密后 = + decodeString); System.out.println(解密后和原串= + (decodeString.equals(oldString) ? 完全一样 : 不同); /测试RSA加密 System.out.println(n=RSA encrypy test=); /第一次调用的时候需要执行!会将生成的秘钥保存到文件中,供后期加密解密使用,而且留给自己的私钥一定要从系统中删除! /KeyPair keyPair = MyEncrypt
12、ion.MyRSA.generateKeyPair(MyEncryption.MyRSA.KEY_SIZE); /初始化完后,即可从KeyPair中获取秘钥对,但这只适用于测试 /PublicKey publicKey0 = keyPair.getPublic(); /PrivateKey privateKey0 = keyPair.getPrivate(); /从文件中获取秘钥, PublicKey publicKey = (PublicKey) MyEncryption.MyRSA.getKeyFromFile(MyEncryption.MyRSA.PUBLIC_KEY_FILE); Pr
13、ivateKey privateKey = (PrivateKey) MyEncryption.MyRSA.getKeyFromFile(MyEncryption.MyRSA.PRIVATE_KEY_FILE); encodeBytes = MyEncryption.MyRSA.publicEncrypt(publicKey, oldString); encodeString = new String(MyEncryption.Base64.encode(encodeBytes).getBytes(), utf-8); decodeBytes = MyEncryption.MyRSA.priv
14、ateDecrypt(privateKey, MyEncryption.Base64.decode(encodeString); decodeString = new String(decodeBytes, utf-8); System.out.println(待加密的字符串 = + oldString); System.out.println(RSA公钥加密后 = + encodeString); System.out.println(RSA私钥解密后 = + decodeString); System.out.println(解密后和原串= + (decodeString.equals(o
15、ldString) ? 完全一样 : 不同); /= encodeBytes = MyEncryption.MyRSA.privateEncrypt(privateKey, oldString); encodeString = new String(MyEncryption.Base64.encode(encodeBytes).getBytes(), utf-8); decodeBytes = MyEncryption.MyRSA.publicDecrypt(publicKey, MyEncryption.Base64.decode(encodeString); decodeString =
16、new String(decodeBytes, utf-8); System.out.println(n待加密的字符串 = + oldString); System.out.println(RSA私钥加密后 = + encodeString); System.out.println(RSA公钥解密后 = + decodeString); System.out.println(解密后和原串= + (decodeString.equals(oldString) ? 完全一样 : 不同); /测试MD5摘要算法 System.out.println(n=MD5 MessageDigest test=
17、); encodeString = MyEncryption.MyMD5.getMD5String_new(oldString); System.out.println(原始字符串 = + oldString); System.out.println(MD5摘要为 = + encodeString); System.out.println(摘要长度为= + encodeString.length(); /测试SHA摘要算法 System.out.println(n=SHA MessageDigest test=); encodeString = MyEncryption.MySHA.getSH
18、AString(oldString); System.out.println(原始字符串 = + oldString); System.out.println(SHA摘要为 = + encodeString); System.out.println(摘要长度为= + encodeString.length(); 第二部分:算法部分,复制到项目即可.注意类名!import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.
19、FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;import java.io.UnsupportedEncodingException;import java.security.Key;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.MessageDigest;import java.securi
20、ty.PrivateKey;import java.security.PublicKey;import java.security.SecureRandom;import java.security.interfaces.RSAPrivateKey;import java.security.interfaces.RSAPublicKey;import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;imp
21、ort javax.crypto.spec.DESedeKeySpec;import javax.crypto.spec.IvParameterSpec;import javax.crypto.spec.SecretKeySpec;public class MyEncryption /static final String CHAR_SET = utf-8; / 加解密统一使用的编码方式 / =DES= public static class MyDES /* * 加密一串字符 * param planeString 待加密的字符串,加密中被转为UTF-8编码类型 * param keyStr
22、ing 秘钥,最多8字符,即64位秘钥长度,不能为 汉子等多字节字符!这里不足长度的double补空格,多余的删除 * return 返回加密后的字符串,转为Base64编码 * throws Exception */ public static String encryptDES(String planeString, String keyString) throws Exception / 秘钥只能为0-8个字符,即64位长度秘钥 keyString = keyString.length() 8 ? keyString.substring(0, 8) : keyString; while
23、(keyString.length() 8 ? keyString.substring(0, 8) : keyString; while (keyString.length() 8) keyString = keyString + ; byte byteMi = Base64.decode(decryptString); /byte byteMi = new BASE64Decoder().decodeBuffer(decryptString); / byte byteMi = decryptString.getBytes(); /如果原始加密串没有经过base64转换启用这句,注释上句 Iv
24、ParameterSpec zeroIv = new IvParameterSpec(keyString.getBytes(); SecretKeySpec sks = new SecretKeySpec(keyString.getBytes(), DES); Cipher cipher = Cipher.getInstance(DES/CBC/PKCS5Padding); cipher.init(Cipher.DECRYPT_MODE, sks, zeroIv); byte decryptedData = cipher.doFinal(byteMi); return new String(decryptedData); / 这条语句不能写为:return new String(decryptedData,encoding) / =3DES= public static class My3DES /* * 3DES加密 * param planeString 普通文本 * param keyString 秘钥,最多24个字符,即192位秘钥长度,不能为 汉子等多字节字符!这里不足长度的double补空格,多余的删除 * return 返回经过加
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1