|
| 1 | +# Des加密算法 |
| 2 | + |
| 3 | +> des加密算法,是一个对称的加密算法,目前被广泛应用,所以打算写一个demo。 |
| 4 | +
|
| 5 | + |
| 6 | +``` |
| 7 | +package com.dao; |
| 8 | +
|
| 9 | +import com.sun.org.apache.xerces.internal.impl.dv.util.Base64; |
| 10 | +import sun.misc.BASE64Decoder; |
| 11 | +import sun.misc.BASE64Encoder; |
| 12 | +
|
| 13 | +import javax.crypto.Cipher; |
| 14 | +import javax.crypto.SecretKey; |
| 15 | +import javax.crypto.SecretKeyFactory; |
| 16 | +import javax.crypto.spec.DESKeySpec; |
| 17 | +import java.io.IOException; |
| 18 | +import java.security.SecureRandom; |
| 19 | +
|
| 20 | +/** |
| 21 | + * Created by linSir on 2017/6/22.des加密算法 |
| 22 | + */ |
| 23 | +public class Test { |
| 24 | +
|
| 25 | + public static void main(String args[]) throws IOException { |
| 26 | +
|
| 27 | +
|
| 28 | + //加密 |
| 29 | + //byte[] result = Test.encrypt(str.getBytes(),password); |
| 30 | + //BASE64Encoder base64encoder = new BASE64Encoder(); |
| 31 | + //String encode=base64encoder.encode(result); |
| 32 | +
|
| 33 | + String miwen = "ZraEmkLPeVT1CBGRpcbXTfVRhUWt6riMMh8UoWcVEClwLcCRuJoMmZW+IS5MYshasXVUu1VIFeqE\n" + |
| 34 | + "ySjMvDvu4z6GxUR7BVq95mfILIT6kvCLW1rvgJoZGlkXzDW7R+n8R/POzu61cfKejnMnW0HiRmsK\n" + |
| 35 | + "CNLB3zf0KYfB5H0x0+GUtXQmtQyG0x5tQSyHSWOdQVyEj7mYFw4h6uFhN94ifgZq8ohpUduWZBgU\n" + |
| 36 | + "EN3B4akKt8+oPQPFv1GvrFucOmrfDpyTy+YuLZZ0nlPA5AYTa2TnC++ZPPo62XW4O2EZ0qGXcuO1\n" + |
| 37 | + "3zHfq8mmtdQ7DbGN2JIBNLL/EN97o7pHRkVNbB9/eHElf37MghHZWTUfIlvRtSTwaWkW3IR2aWzj\n" + |
| 38 | + "GQXrdqErVUdcTvLH2fGnInYU6XAtwJG4mgyZG6OZZ89Yg9iOcWG4GruJvFEa/UQNDmbS+vyvWpP/\n" + |
| 39 | + "75zOiDos5s5yeJUcUaJt+SkUR7z5yr7bbK/DHkS5aEvfNI/nL4Z4DrGN++9Uzv34XD4ZTg0csEuL\n" + |
| 40 | + "96+LAUKED43iaJUo6wruiZ/7KmpvP5p3ii5p03Z1ymscmTlqUTZ55YFBCz3dZg8OSGIlKj+7uaYF\n" + |
| 41 | + "umweL38ksAtVL1wjgWMVF+9oYUie/jf6+mAdmvwiACoGu71ZziWc4tz1UPb27Qx4Qf0h/nItAkuT\n" + |
| 42 | + "yLK6+Hx0+GQ2weK2q95kgf8zUs1igyhu1VdMGHbp/Ma3DyJIo6wPgwRlpFedCq0/w7ECGGPHfLUb\n" + |
| 43 | + "eNmBK3nCqqN7TABiLfHfzR8mBjjMcJQ1MtGGwZB6H6zAGkcSEQqHgsTbnG6t8GvS06t9eepMn6VG\n" + |
| 44 | + "7X+dS4LUS9LpIZ/OgNwxvyxd3vw/dKn9u0OLgvJRGv1EDQ5m0t80qIo6RxHCLmnTdnXKaxxFIhNG\n" + |
| 45 | + "caq19CPEthsSFziTHlX/qM5g/yCwbN9+qClQ0z5VI/ZGUAcs9Cz3WjimPGKNyLa+AKgUE7dh4sFr\n" + |
| 46 | + "vQGrlRxRom35KRRRd/VE9Goz3EAcQQ1NhiDMYobeoH0as5XkG3hTF2zZyfn/QJZnNwh4GxCLkZPS\n" + |
| 47 | + "VKFdg0bpAy3irJouw+IG69DUewM4W4a1u7h8i76pCLLxP5gIYqKqKgm97itSQe8ZV3qbG9gNxMrg\n" + |
| 48 | + "aUQ+fCE3TvsP07RdLW9Dn6Mazxnq7wnw9X2Qj9+sTl+hLLKhL+ZlHIJk5wvvmTz6OikBCmYmdEZb\n" + |
| 49 | + "Q1Prg0CgHVrFy4JOc9rTCmLnieHBG/xVwI5AOp42NUOk/Ycc7EIuzQ4tKEGS7RjmcpKEUMkog5c5\n" + |
| 50 | + "k693mGsn2VUQNeRPmfrcN7Ra+L18fvKMs1ESEjrUR/GpHwg6UcCBfBh8r/B5bYdoV2ik02liSVzX\n" + |
| 51 | + "Kt5vzA3ZjC5mvkF/RJJUoCUa6j3xqznjJhmABsN23gOcRh8RRWb8VGI2xD8ErYwuZr5Bf0SSTyTL\n" + |
| 52 | + "p6dacHJIz1u6+TEr9OfinHoMzBwXETOkAnPOt/YdwGw8/MM41w=="; |
| 53 | +
|
| 54 | + BASE64Decoder base64decoder = new BASE64Decoder(); |
| 55 | + byte[] encodeByte = base64decoder.decodeBuffer(miwen); |
| 56 | +
|
| 57 | +
|
| 58 | + //直接将如上内容解密 |
| 59 | + try { |
| 60 | + byte[] decryResult = Test.decrypt(encodeByte, ""); |
| 61 | + System.out.println("解密后:" + new String(decryResult)); |
| 62 | + } catch (Exception e1) { |
| 63 | + e1.printStackTrace(); |
| 64 | + } |
| 65 | +
|
| 66 | + } |
| 67 | +
|
| 68 | + /** |
| 69 | + * 加密 |
| 70 | + */ |
| 71 | + public static byte[] encrypt(byte[] datasource, String password) { |
| 72 | + try { |
| 73 | + SecureRandom random = new SecureRandom(); |
| 74 | + DESKeySpec desKey = new DESKeySpec(password.getBytes()); |
| 75 | + //创建一个密匙工厂,然后用它把DESKeySpec转换成 |
| 76 | + SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); |
| 77 | + SecretKey securekey = keyFactory.generateSecret(desKey); |
| 78 | + //Cipher对象实际完成加密操作 |
| 79 | + Cipher cipher = Cipher.getInstance("DES"); |
| 80 | + //用密匙初始化Cipher对象 |
| 81 | + cipher.init(Cipher.ENCRYPT_MODE, securekey, random); |
| 82 | + //现在,获取数据并加密 |
| 83 | + //正式执行加密操作 |
| 84 | + return cipher.doFinal(datasource); |
| 85 | + } catch (Throwable e) { |
| 86 | + e.printStackTrace(); |
| 87 | + } |
| 88 | + return null; |
| 89 | + } |
| 90 | +
|
| 91 | + /* |
| 92 | + * 解密 |
| 93 | + */ |
| 94 | + private static byte[] decrypt(byte[] src, String password) throws Exception { |
| 95 | + // DES算法要求有一个可信任的随机数源 |
| 96 | + SecureRandom random = new SecureRandom(); |
| 97 | + // 创建一个DESKeySpec对象 |
| 98 | + DESKeySpec desKey = new DESKeySpec(password.getBytes()); |
| 99 | + // 创建一个密匙工厂 |
| 100 | + SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); |
| 101 | + // 将DESKeySpec对象转换成SecretKey对象 |
| 102 | + SecretKey securekey = keyFactory.generateSecret(desKey); |
| 103 | + // Cipher对象实际完成解密操作 |
| 104 | + Cipher cipher = Cipher.getInstance("DES"); |
| 105 | + // 用密匙初始化Cipher对象 |
| 106 | + cipher.init(Cipher.DECRYPT_MODE, securekey, random); |
| 107 | + // 真正开始解密操作 |
| 108 | + return cipher.doFinal(src); |
| 109 | + } |
| 110 | +} |
| 111 | +
|
| 112 | +``` |
0 commit comments