Java中有哪些加密与解密的方法

  

Java中有哪些加密与解密的方法?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

<强>一,常用的加密/解密算法

严格来说Base64并不是一种加密/解密算法,而是一种编码方式.Base64不生成密钥,通过Base64编码后的密文就可以直接“翻”译为明文,但是可以通过向明文中添加混淆字符来达到加密的效果。

DES是一种基于56位密钥的对称算法,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。现在DES已经不是一种安全的加密算法,已被公开破解,现在DES已经被高级加密标准(AES)所代替。

3 DES是DES的一种派生算法,主要提升了DES的一些实用所需的安全性。

AES是现在对称加密算法中最流行的算法之一。

为了实现上述的算法,我们可以实用JDK自带的实现,也可以使用一些开源的第三方库,例如Bouncy Castle (https://www.bouncycastle.org/)和厦门海沧编解码器(https://commons.apache.org/proper/commons-codec/)。

<强> 1. Base64

包com.tancky.security;
  进口java.io.IOException;
  进口sun.misc.BASE64Decoder;
  进口sun.misc.BASE64Encoder;
  公开课Base64Demo {
  私有静态字符串src=https://www.yisu.com/zixun/癟estBase64”;
  公共静态void main (String [] args) {
  Base64Demo.jdkBase64 ();
  Base64Demo.commonsCodecBase64 ();
  Base64Demo。bouncyCastleBase64 ();
  }//使用JDK的base64实现,
  公共静态孔隙jdkBase64 () {
  BASE64Encoder编码器=new BASE64Encoder ();
  字符串编码=encoder.encode (Base64Demo.src.getBytes ());
  system . out。println(“编码:“+编码);
  BASE64Decoder解码器=new BASE64Decoder ();
  尝试{
  字符串解码=新的字符串(decoder.decodeBuffer(编码));
  system . out。println(“解码:“+解码);
  }捕捉(IOException e) {
  e.printStackTrace ();
  }
  }//使用apache的commonsCodec实现
  公共静态孔隙commonsCodecBase64 () {
  byte [] encodeBytes=org.apache.commons.codec.binary.Base64.encodeBase64 (Base64Demo.src.getBytes ());
  字符串编码=新的字符串(encodeBytes);
  system . out。println(“编码:“+编码);
  byte [] decodeBytes=org.apache.commons.codec.binary.Base64.decodeBase64(编码);
  字符串解码=新的字符串(decodeBytes);
  system . out。println(“解码:“+解码);
  }//使用bouncyCastlede实现
  公共静态孔隙bouncyCastleBase64 () {
  byte [] encodeBytes=org.bouncycastle.util.encoders.Base64.encode (Base64Demo.src.getBytes ());
  字符串编码=新的字符串(encodeBytes);
  system . out。println(“编码:“+编码);
  byte [] decodeBytes=org.bouncycastle.util.encoders.Base64.decode(编码);
  字符串解码=新的字符串(decodeBytes);
  system . out。println(“解码:“+解码);
  }
  }

<强> 2。DES

包com.tancky.security;
  进口java.security.InvalidKeyException;
  进口java.security.Key;
  进口java.security.NoSuchAlgorithmException;
  进口java.security.NoSuchProviderException;
  进口java.security.Security;
  进口java.security.spec.InvalidKeySpecException;
  进口javax.crypto.BadPaddingException;
  进口javax.crypto.Cipher;
  进口javax.crypto.IllegalBlockSizeException;
  进口javax.crypto.KeyGenerator;
  进口javax.crypto.NoSuchPaddingException;
  进口javax.crypto.SecretKey;
  进口javax.crypto.SecretKeyFactory;
  进口javax.crypto.spec.DESKeySpec;
  进口org.bouncycastle.jce.provider.BouncyCastleProvider;
  进口org.bouncycastle.util.encoders.Hex;
  公开课DESDemo {
  私有静态字符串src=https://www.yisu.com/zixun/癟estDES”;
  公共静态孔隙jdkDES () {
  尝试{//生成密钥密钥
  KeyGenerator KeyGenerator=KeyGenerator.getInstance (DES);
  keyGenerator.init (56);
  SecretKey SecretKey=keyGenerator.generateKey ();
  byte [] bytesKey=secretKey.getEncoded ();//关键转换
  DESKeySpec deSedeKeySpec=new DESKeySpec (bytesKey);
  SecretKeyFactory工厂=SecretKeyFactory.getInstance (DES);
  关键convertSecretKey=factory.generateSecret (deSedeKeySpec);//加密
  密码密码=. getinstance (“DES/欧洲/PKCS5Padding”);
  cipher.init(密码。ENCRYPT_MODE convertSecretKey);
  byte [] encodeResult=cipher.doFinal (DESDemo.src.getBytes ());
  system . out。println (“DESEncode:”+ Hex.toHexString (encodeResult));//解密
  cipher.init (Cipher.DECRYPT_MODE convertSecretKey);
  byte [] DecodeResult=cipher.doFinal (encodeResult);
  system . out。println (“DESDncode:”+新字符串(DecodeResult));
  }捕捉(NoSuchAlgorithmException e) {
  e.printStackTrace ();
  }捕捉(InvalidKeyException e) {//TODO自动生成的catch块
  e.printStackTrace ();
  }捕捉(InvalidKeySpecException e) {//TODO自动生成的catch块
  e.printStackTrace ();
  }捕捉(NoSuchPaddingException e) {//TODO自动生成的catch块
  e.printStackTrace ();
  }捕捉(IllegalBlockSizeException e) {//TODO自动生成的catch块
  e.printStackTrace ();
  }捕捉(BadPaddingException e) {//TODO自动生成的catch块
  e.printStackTrace ();
  }
  }
  公共静态孔隙bcd () {
  尝试{//使用BouncyCastle的DES加密
  安全。addProvider(新BouncyCastleProvider ());//生成密钥密钥
  KeyGenerator KeyGenerator=KeyGenerator.getInstance(“德”、“公元前”);
  keyGenerator.init (56);
  SecretKey SecretKey=keyGenerator.generateKey ();
  byte [] bytesKey=secretKey.getEncoded ();//关键转换
  DESKeySpec deSedeKeySpec=new DESKeySpec (bytesKey);
  SecretKeyFactory工厂=SecretKeyFactory.getInstance (DES);
  关键convertSecretKey=factory.generateSecret (deSedeKeySpec);//加密
  密码密码=. getinstance (“DES/欧洲/PKCS5Padding”);
  cipher.init(密码。ENCRYPT_MODE convertSecretKey);
  byte [] encodeResult=cipher.doFinal (DESDemo.src.getBytes ());
  system . out。println (“DESEncode:”+ Hex.toHexString (encodeResult));//解密
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

Java中有哪些加密与解密的方法