Java编程和android移动开发通用的常见加密算法Word文件下载.docx
- 文档编号:18954398
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:22
- 大小:21.77KB
Java编程和android移动开发通用的常见加密算法Word文件下载.docx
《Java编程和android移动开发通用的常见加密算法Word文件下载.docx》由会员分享,可在线阅读,更多相关《Java编程和android移动开发通用的常见加密算法Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
@#$%^&
*()-=+_~`<
>
?
:
;
\\\"
|}]{{[喊汉a字a喊喊喊汉a字a喊喊喊汉a字a喊喊!
|}]{{[喊汉a字a喊喊喊汉a字a喊喊喊汉a字a喊喊!
|}]{{[喊汉aQQ:
174997990字a喊喊喊汉a字a喊喊!
|}]{{[喊汉a字syd168@a喊喊喊汉a字a喊喊!
|}]{{[喊汉a字a喊喊喊汉a字a喊喊喊"
System.out.println("
=============designedby174997990@======"
);
//测试Base64编码
====================Base64test================="
encodeString=MyEncryption.Base64.encode(oldString.getBytes());
//以系统默认编码方式转换为字节数组
byte[]bb=MyEncryption.Base64.decode(encodeString);
//返回的字符串就是系统默认编码
decodeString=newString(bb);
原始字符串==>
"
+oldString);
Base64编码==>
+encodeString);
Base64解码==>
+decodeString);
解码后和原串==>
+(decodeString.equals(oldString)?
"
完全一样"
:
不同"
));
//测试DES加密
\n====================DESencrypytest================="
keyString="
01234567"
encodeString=MyEncryption.MyDES.encryptDES(oldString,keyString);
decodeString=MyEncryption.MyDES.decryptDES(encodeString,keyString);
decodeString=newString(decodeString.getBytes());
DES加密后==>
DES解密后==>
解密后和原串==>
//测试3DES加密
abcdefghigk"
\n====================3DESencrypytest================="
encodeString=MyEncryption.My3DES.encrypt3DES(oldString,keyString);
decodeString=MyEncryption.My3DES.decrypt3DES(encodeString,keyString);
3DES加密后==>
3DES解密后==>
//测试AES加密
abcdefsdfsdfghigk"
\n====================AESencrypytest================="
encodeString=MyEncryption.MyAES.encryptAES(oldString,keyString);
decodeString=MyEncryption.MyAES.decryptAES(encodeString,keyString);
AES加密后==>
AES解密后==>
//测试RSA加密
\n====================RSAencrypytest================="
//第一次调用的时候需要执行!
!
会将生成的秘钥保存到文件中,供后期加密解密使用,而且留给自己的私钥一定要从系统中删除!
//KeyPairkeyPair=MyEncryption.MyRSA.generateKeyPair(MyEncryption.MyRSA.KEY_SIZE);
//初始化完后,即可从KeyPair中获取秘钥对,但这只适用于测试
//PublicKeypublicKey0=keyPair.getPublic();
//PrivateKeyprivateKey0=keyPair.getPrivate();
//从文件中获取秘钥,
PublicKeypublicKey=(PublicKey)MyEncryption.MyRSA.getKeyFromFile(MyEncryption.MyRSA.PUBLIC_KEY_FILE);
PrivateKeyprivateKey=(PrivateKey)MyEncryption.MyRSA.getKeyFromFile(MyEncryption.MyRSA.PRIVATE_KEY_FILE);
encodeBytes=MyEncryption.MyRSA.publicEncrypt(publicKey,oldString);
encodeString=newString(MyEncryption.Base64.encode(encodeBytes).getBytes(),"
utf-8"
decodeBytes=MyEncryption.MyRSA.privateDecrypt(privateKey,MyEncryption.Base64.decode(encodeString));
decodeString=newString(decodeBytes,"
待加密的字符串==>
RSA公钥加密后==>
RSA私钥解密后==>
//==========================
encodeBytes=MyEncryption.MyRSA.privateEncrypt(privateKey,oldString);
decodeBytes=MyEncryption.MyRSA.publicDecrypt(publicKey,MyEncryption.Base64.decode(encodeString));
\n待加密的字符串==>
RSA私钥加密后==>
RSA公钥解密后==>
//测试MD5摘要算法
\n====================MD5MessageDigesttest================="
encodeString=MyEncryption.MyMD5.getMD5String_new(oldString);
MD5摘要为==>
摘要长度为==>
+encodeString.length());
//测试SHA摘要算法
\n====================SHAMessageDigesttest================="
encodeString=MyEncryption.MySHA.getSHAString(oldString);
SHA摘要为==>
}
}
第二部分:
算法部分,复制到项目即可.注意类名!
importjava.io.ByteArrayOutputStream;
importjava.io.FileInputStream;
importjava.io.FileNotFoundException;
importjava.io.FileOutputStream;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.io.UnsupportedEncodingException;
importjava.security.Key;
importjava.security.KeyPair;
importjava.security.KeyPairGenerator;
importjava.security.MessageDigest;
importjava.security.SecureRandom;
importjava.security.interfaces.RSAPrivateKey;
importjava.security.interfaces.RSAPublicKey;
importjavax.crypto.Cipher;
importjavax.crypto.KeyGenerator;
importjavax.crypto.SecretKey;
importjavax.crypto.SecretKeyFactory;
importjavax.crypto.spec.DESedeKeySpec;
importjavax.crypto.spec.IvParameterSpec;
importjavax.crypto.spec.SecretKeySpec;
publicclassMyEncryption{
//staticfinalStringCHAR_SET="
//加解密统一使用的编码方式
//======================DES=======================
publicstaticclassMyDES{
/**
*加密一串字符
*@paramplaneString待加密的字符串,加密中被转为UTF-8编码类型
*@paramkeyString秘钥,最多8字符,即64位秘钥长度,不能为汉子等多字节字符!
这里不足长度的double补空格,多余的删除
*@return返回加密后的字符串,转为Base64编码
*@throwsException
*/
publicstaticStringencryptDES(StringplaneString,StringkeyString)throwsException{
//秘钥只能为0-8个字符,即64位长度秘钥
keyString=keyString.length()>
8?
keyString.substring(0,8):
keyString;
while(keyString.length()<
8)
keyString=keyString+"
IvParameterSpeczeroIv=newIvParameterSpec(keyString.getBytes());
SecretKeySpecsks=newSecretKeySpec(keyString.getBytes(),"
DES"
Ciphercipher=Cipher.getInstance("
DES/CBC/PKCS5Padding"
cipher.init(Cipher.ENCRYPT_MODE,sks,zeroIv);
byte[]encryptedData=cipher.doFinal(planeString.getBytes());
//returnnewString(encryptedData);
//如果不需要base64编码,(加密结果中包含乱码!
),注释下面一句
returnBase64.encode(encryptedData);
//转换为常见字符
//returnnewBASE64Encoder().encode(encryptedData);
}
*解密经过加密的字符串
*@paramdecryptString要解密的字符串,utf-8编码类型的并且基于Base64编码后的
*@return返回utf-8编码类型的字符串,可根据需要进行编码转换
*可以使用newString(decodeString.getBytes(),"
新编码"
)进行编码转换,
*decodeString.getBytes(),可以获取基于系统缺省编码(项目代码编码)的串
*System.getProperty("
file.encoding"
获取系统编码类型的字符串
publicstaticStringdecryptDES(StringdecryptString,StringkeyString)throwsException{
byte[]byteMi=Base64.decode(decryptString);
//byte[]byteMi=newBASE64Decoder().decodeBuffer(decryptString);
//byte[]byteMi=decryptString.getBytes();
//如果原始加密串没有经过base64转换启用这句,注释上句
cipher.init(Cipher.DECRYPT_MODE,sks,zeroIv);
byte[]decryptedData=cipher.doFinal(byteMi);
returnnewString(decryptedData);
//这条语句不能写为:
returnnewString(decryptedData,encoding)
//======================3DES====================
publicstaticclassMy3DES{
*3DES加密
*@paramplaneString普通文本
*@paramkeyString秘钥,最多24个字符,即192位秘钥长度,不能为汉子等多字节字符!
*@return返回经过加
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 编程 android 移动 开发 通用 常见 加密算法