Java怎么加密对象,Java怎么加密
写爬虫互联网协议(互联网协议)被封了怎么解决?立即使用
1、MD5(Message Digest Algorithm)加密算法
是一种单向加密算法,只能加密不能解密,示例
/**
* MD5简单加密
* @param内容加密内容
* @返回字符串
*/
公共静态字符串MD5加密(最终字符串内容){
MessageDigest md5=null
尝试{
MD5=消息摘要。getinstance(ALGORITHM _ MD5);
} catch(nosuch算法异常e){
e。printstacktrace();
}
//MD5。更新(正文。getbytes());
//摘要()最后返回讯息摘要5哈希值,返回值为8位字符串。因为讯息摘要5哈希值是16位的十六进制值,实际上就是8位的字符
//BigInteger函数则将8位的字符串转换成16位十六进制值,用字符串来表示;得到字符串形式的混杂值
大整数摘要=新的大整数(MD5。摘要(内容。getbytes()));
//32位
返回消化。tostring(16);
}2、BASE64进行加密/解密
通常用作对二进制数据进行加密,示例
/**
* base64加密
* @param内容待加密内容
* @返回字节[]
*/
公共静态字节[]base64加密(最终字符串内容){
返回Base64.getEncoder().编码(内容。getbytes());
}
/**
* base64解密
* @ param encoderContent已加密内容
* @返回字节[]
*/
公共静态字节[] base64Decrypt(最终字节[]编码内容){
返回Base64.getDecoder().解码(编码器内容);
}3、DES(Data Encryption Standard)对称加密/解密
数据加密标准算法,和BASE64最明显的区别就是有一个工作密钥,该密钥既用于加密、也用于解密,并且要求密钥是一个长度至少大于8位的字符串,示例
/**
* DES加密
* @param key秘钥键
* @param内容待加密内容
* @返回字节[]
*/
公共静态字节[]解密(最终字符串密钥,最终字符串内容){
返回processCipher(content.getBytes(),getSecretKey(key),Cipher .ENCRYPT_MODE,ALGORITHM _ DES);
}
/**
* DES解密
* @param key秘钥键
* @ param encoderContent已加密内容
* @返回字节[]
*/
公共静态字节[]解密(最终字符串密钥,最终字节[]编码内容){
返回processCipher(encoderContent,getSecretKey(key),Cipher .DECRYPT_MODE,ALGORITHM _ DES);
}4、RSA非对称加密/解密
非对称加密算法的典型代表,既能加密、又能解密。和对称加密算法比如数据加密标准的明显区别在于用于加密、解密的密钥是不同的。使用南非共和国(南非共和国)算法,只要密钥足够长(一般要求1024位),加密的信息是不能被破解的。示例
/**
* RSA加密
* @param内容待加密内容
* @返回字节[]
*/
公共静态字节[] RSAEncrypt(最终字符串内容){
返回processCipher(content.getBytes(),keyPair.getPrivate(),Cipher .ENCRYPT_MODE,ALGORITHM _ RSA);
}
/**
* RSA解密
* @ param encoderContent已加密内容
* @返回字节[]
*/
公共静态字节[]RSA解密(最终字节[]编码内容){
返回processCipher(encoderContent,keyPair.getPublic(),Cipher .DECRYPT_MODE,ALGORITHM _ RSA);
}5、SHA(Secure Hash Algorithm,安全散列算法)
数字签名等密码学应用中重要的工具,被广泛地应用于电子商务等信息安全领域,示例
/**
* SHA加密
* @param内容待加密内容
* @返回字符串
*/
公共静态字符串SHAEncrypt(最终字符串内容){
尝试{
消息摘要。getinstance(ALGORITHM _ SHA);
字节[]sha _ byte=sha。摘要(内容。getbytes());
字符串缓冲区十六进制值=新字符串缓冲区();
对于(字节b : sha_byte) {
//将其中的每个字节转成十六进制字符串:字节类型的数据最高位是符号位,通过和0xff进行与操作,转换为(同国际组织)国际组织类型的正整数。
字符串到十六进制字符串=整数。转换为十六进制字符串(b0x ff);
十六进制值。append(tohexstring。length()==1?0 toHexString:toHexString);
}
返回十六进制值。tostring();
//字符串缓冲区十六进制值2=新字符串缓冲区();
//for(int I=0;i sha _ byte.lengthi ) {
//int val=((int)sha _ byte[I])0x ff;
//if (val 16) {
//十六进制值2。追加(“0”);
//}
//十六进制值2。追加(整数。tohexstring(val));
//}
//返回十六进制值2。tostring();
} catch(异常e) {
e。printstacktrace();
}
返回"";
}6、HMAC(Hash Message Authentication Code,散列消息鉴别码)
使用一个密钥生成一个固定大小的小数据块,即麦克,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证,示例
/**
* HMAC加密
* @param key给定秘钥键
* @param内容待加密内容
* @返回字符串
*/
公共静态字节[]hmacecrypt(最终字符串密钥,最终字符串内容){
尝试{
秘密密钥秘密密钥=新秘密密钥规范(密钥。getbytes()、ALGORITHM _ MAC);
MAC MAC=MAC。getinstance(密钥。getalgorithm());
//初始化老兄
麦克。init(密钥);
返回麦克。做最后(内容。getbytes());
} catch(异常e) {
e。printstacktrace();
}
返回空
}测试代码:
公共静态void main(String[] args) {
//md5简单加密
字符串文本=我是文本;
系统。出去。println(endecoderutil。MD 5加密(文本));
//base64进行加密解密,通常用作对二进制数据进行加密
byte[]base 64 encrypt=endecoderutil。base 64加密( 123456789 );
字符串到十六进制字符串=十六进制实用程序。转换为十六进制字符串(base 64 encrypt);
系统。出去。println(toHexString);
byte[]base64 decrypt=endecoderutil。base64解密(base64加密);
System.out.println(新字符串(base64解密));
//DES对称加密/解密
//要求键至少长度为8个字符
String key= 123456789
//加密
byte[]encode _ bytes=EnDecoderUtil .DESEncrypt(key, Hello,DES );
系统。出去。println(base64。获取编码器().encodeToString(encode _ bytes));
//解密
byte[]decode _ bytes=EnDecoderUtil .DESDecrypt(key,encode _ bytes);
System.out.println(新字符串(decode _ bytes));
//RSA
//数据使用私钥加密
byte[] en_byte=EnDecoderUtil .RSAEncrypt(Hi,RSA );
系统。出去。println(base64。获取编码器().encodeToString(en _ byte));
//用户使用公钥解密
byte[] de_byte=EnDecoderUtil .RSA解密(en _ byte);
System.out.println(新字符串(de _ byte));
//服务器根据私钥和加密数据生成数字签名
byte[]sign _ byte=endecoderutil。获取签名(en _ byte);
系统。出去。println(base64。获取编码器().encodeToString(sign _ byte));
//用户根据公钥、加密数据验证数据是否被修改过
布尔型verify _ result=endecoderutil。验证签名(en _ byte,sign _ byte);
系统。出去。println(verify _ result);
//SHA
String sha=EnDecoderUtil .SHAEncrypt(Hi,RSA );
系统。出去。println(sha);
//HMAC
byte[] mac_bytes=EnDecoderUtil .HMACEncrypt(键,嗨,HMAC’);
系统。出去。println(十六进制实用程序。tohexstring(MAC _ bytes));
}更多爪哇岛知识请关注爪哇岛基础教程栏目。以上就是爪哇岛怎么加密的详细内容,更多请关注我们其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。