Java加密解密算法-DES加密解密 ゝ一纸荒年。 2021-09-25 23:40 511阅读 0赞 package algo; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import org.apache.tomcat.util.codec.binary.Base64; /\*\* \* DES-Data Encryption Standard,即数据加密算法。是IBM公司于1975年研究成功并公开发表的。 \* DES算法的入口参数有三个:Key、Data、Mode。其中 Key为8个字节共64位,是DES算法的工作密钥; \* Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密 或解密。 DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位。 \* @author Administrator \* \*/ public class DES \{ public static void main(String\[\] args) throws Exception \{ String str="0123456789abcdefg"; System.out.println("原始:"+str); // DES数据加密 String s1=encryptBasedDes(str); System.out.println("DES加密:"+s1); String s2 = decryptBasedDes(s1); System.out.println("DES解密:"+s2); \} private final static String DES = "DES"; private static final byte\[\] DES\_KEY = \{ 21, 1, -110, 82, -32, -85, -128, -65 \}; public static String encryptBasedDes(String data) \{ String encryptedData = null; try \{ // DES算法要求有一个可信任的随机数源 SecureRandom sr = new SecureRandom(); DESKeySpec deskey = new DESKeySpec(DES\_KEY); // 创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES); SecretKey key = keyFactory.generateSecret(deskey); // 加密对象 Cipher cipher = Cipher.getInstance(DES); //用密钥初始化Cipher对象 cipher.init(Cipher.ENCRYPT\_MODE, key, sr); // 加密,并把字节数组编码成字符串 encryptedData = Base64.encodeBase64String((cipher.doFinal(data.getBytes()))); \} catch (Exception e) \{ throw new RuntimeException("加密错误,错误信息:", e); \} return encryptedData; \} /\*\* \* 数据解密,算法(DES) \* \* @param cryptData \* 加密数据 \* @return 解密后的数据 \*/ public static String decryptBasedDes(String cryptData) \{ String decryptedData = null; try \{ // 生成一个可信任的随机数源 SecureRandom sr = new SecureRandom(); //从原始密钥数据创建DESKeySpec对象 DESKeySpec deskey = new DESKeySpec(DES\_KEY); // 创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES); SecretKey key = keyFactory.generateSecret(deskey); // 解密对象 Cipher cipher = Cipher.getInstance(DES); //用密钥初始化Cipher对象 cipher.init(Cipher.DECRYPT\_MODE, key, sr); // 把字符串解码为字节数组,并解密 decryptedData = new String(cipher.doFinal(Base64.decodeBase64(cryptData))); \} catch (Exception e) \{ throw new RuntimeException("解密错误,错误信息:", e); \} return decryptedData; \} \}
还没有评论,来说两句吧...