您好,欢迎访问一九零五行业门户网

java怎么加密

1、md5(message digest algorithm)加密算法
是一种单向加密算法,只能加密不能解密,示例
/** * md5简单加密 * @param content 加密内容 * @return string */ public static string md5encrypt(final string content) { messagedigest md5 = null; try { md5 = messagedigest.getinstance(algorithm_md5); } catch (nosuchalgorithmexception e) { e.printstacktrace(); }// md5.update(text.getbytes()); //digest()最后返回md5 hash值,返回值为8位字符串。因为md5 hash值是16位的hex值,实际上就是8位的字符 //biginteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值 biginteger digest = new biginteger(md5.digest(content.getbytes())); //32位 return digest.tostring(16); }
2、base64进行加密/解密
通常用作对二进制数据进行加密,示例
/** * base64加密 * @param content 待加密内容 * @return byte[] */ public static byte[] base64encrypt(final string content) { return base64.getencoder().encode(content.getbytes()); } /** * base64解密 * @param encodercontent 已加密内容 * @return byte[] */ public static byte[] base64decrypt(final byte[] encodercontent) { return base64.getdecoder().decode(encodercontent); }
3、des(data encryption standard)对称加密/解密
数据加密标准算法,和base64最明显的区别就是有一个工作密钥,该密钥既用于加密、也用于解密,并且要求密钥是一个长度至少大于8位的字符串,示例
/** * des加密 * @param key 秘钥key * @param content 待加密内容 * @return byte[] */ public static byte[] desencrypt(final string key, final string content) { return processcipher(content.getbytes(), getsecretkey(key), cipher.encrypt_mode , algorithm_des); } /** * des解密 * @param key 秘钥key * @param encodercontent 已加密内容 * @return byte[] */ public static byte[] desdecrypt(final string key, final byte[] encodercontent) { return processcipher(encodercontent, getsecretkey(key), cipher.decrypt_mode, algorithm_des); }
4、rsa非对称加密/解密
非对称加密算法的典型代表,既能加密、又能解密。和对称加密算法比如des的明显区别在于用于加密、解密的密钥是不同的。使用rsa算法,只要密钥足够长(一般要求1024bit),加密的信息是不能被破解的。示例
/** * rsa加密 * @param content 待加密内容 * @return byte[] */ public static byte[] rsaencrypt(final string content) { return processcipher(content.getbytes(), keypair.getprivate(), cipher.encrypt_mode , algorithm_rsa); } /** * rsa解密 * @param encodercontent 已加密内容 * @return byte[] */ public static byte[] rsadecrypt(final byte[] encodercontent) { return processcipher(encodercontent, keypair.getpublic(), cipher.decrypt_mode, algorithm_rsa); }
5、sha(secure hash algorithm,安全散列算法)
数字签名等密码学应用中重要的工具,被广泛地应用于电子商务等信息安全领域,示例
/** * sha加密 * @param content 待加密内容 * @return string */ public static string shaencrypt(final string content) { try { messagedigest sha = messagedigest.getinstance(algorithm_sha); byte[] sha_byte = sha.digest(content.getbytes()); stringbuffer hexvalue = new stringbuffer(); for (byte b : sha_byte) { //将其中的每个字节转成十六进制字符串:byte类型的数据最高位是符号位,通过和0xff进行与操作,转换为int类型的正整数。 string tohexstring = integer.tohexstring(b & 0xff); hexvalue.append(tohexstring.length() == 1 ? "0" + tohexstring : tohexstring); } return hexvalue.tostring();// stringbuffer hexvalue2 = new stringbuffer();// for (int i = 0; i < sha_byte.length; i++) {// int val = ((int) sha_byte[i]) & 0xff;// if (val < 16) {// hexvalue2.append("0");// }// hexvalue2.append(integer.tohexstring(val));// }// return hexvalue2.tostring(); } catch (exception e) { e.printstacktrace(); } return ""; }
6、hmac(hash message authentication code,散列消息鉴别码)
使用一个密钥生成一个固定大小的小数据块,即mac,并将其加入到消息中,然后传输。接收方利用与发送方共享的密钥进行鉴别认证,示例
/** * hmac加密 * @param key 给定秘钥key * @param content 待加密内容 * @return string */ public static byte[] hmacencrypt(final string key, final string content) { try { secretkey secretkey = new secretkeyspec(key.getbytes(), algorithm_mac); mac mac = mac.getinstance(secretkey.getalgorithm()); //初始化mac mac.init(secretkey); return mac.dofinal(content.getbytes()); } catch (exception e) { e.printstacktrace(); } return null; }
测试代码:
public static void main(string[] args) { //md5简单加密 string text = "i am text"; system.out.println(endecoderutil.md5encrypt(text)); //base64进行加密解密,通常用作对二进制数据进行加密 byte[] base64encrypt = endecoderutil.base64encrypt("123456789"); string tohexstring = hexutils.tohexstring(base64encrypt); system.out.println(tohexstring); byte[] base64decrypt = endecoderutil.base64decrypt(base64encrypt); system.out.println(new string(base64decrypt)); //des对称加密/解密 //要求key至少长度为8个字符 string key = "123456789"; //加密 byte[] encode_bytes = endecoderutil.desencrypt(key, "hello, des"); system.out.println(base64.getencoder().encodetostring(encode_bytes)); //解密 byte[] decode_bytes = endecoderutil.desdecrypt(key, encode_bytes); system.out.println(new string(decode_bytes)); //rsa //数据使用私钥加密 byte[] en_byte = endecoderutil.rsaencrypt("hi, rsa"); system.out.println(base64.getencoder().encodetostring(en_byte)); //用户使用公钥解密 byte[] de_byte = endecoderutil.rsadecrypt(en_byte); system.out.println(new string(de_byte)); //服务器根据私钥和加密数据生成数字签名 byte[] sign_byte = endecoderutil.getsignature(en_byte); system.out.println(base64.getencoder().encodetostring(sign_byte)); //用户根据公钥、加密数据验证数据是否被修改过 boolean verify_result = endecoderutil.verifysignature(en_byte, sign_byte); system.out.println(verify_result); //sha string sha = endecoderutil.shaencrypt("hi, rsa"); system.out.println(sha); //hmac byte[] mac_bytes = endecoderutil.hmacencrypt(key, "hi, hmac"); system.out.println(hexutils.tohexstring(mac_bytes)); }
更多java知识请关注java基础教程栏目。
以上就是java怎么加密的详细内容。
其它类似信息

推荐信息