资讯详情

加密算法 java代码示例

一、不可逆加密

  • 常用的不可逆加密算法有:MD5,HMAC,SHA1,SHA2
  • 应用场景:用户密码加密,验证过程是比较 加密字符串是否与数据库表中的字符串一致。
  • 缺点:通过比较资源库中的字符串,可以破解。通过加盐来提高复杂性。

二、可逆加密

1.对称加密

  • 对称加密算法有:DES、3DES、AES128、AES192、AES256
  • 加密和解密数据 是同一个密钥

2.非对称加密

  • 对称加密算法有:RSA、SM2
  • 两个密钥分为公钥和私钥。只有一对匹配的密钥才能加密和解密数据。

三、非对称加密RSA示例

package test;  import cn.hutool.crypto.SecureUtil; import weaver.rsa.security.Base64;  import javax.crypto.Cipher; import java.security.*; import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.X509EncodedKeySpec;  /** * @Description: 获取RSA 加密和解密公钥和私钥 * @Author: * @CreateDate: 2022/5/13 13:35 */ public class TestRSA { 
             /** * @Description //获取公钥和私钥 * @Date 2022/5/13 14:05 * @Param [args] * @return void */     public static void main(String[] args) { 
                 KeyPair keyPair = SecureUtil.generateKeyPair("RSA/ECB/PKCS1Padding",2048);         String pubKey = Base64.encodeBase64String(keyPair.getPublic().getEncoded());         String priKey = Base64.encodeBase64String(keyPair.getPrivate().getEncoded());

        System.out.println(pubKey);

        System.out.println("-------------");
    
        System.out.println(priKey);
    }
    /** * @Description //使用公钥进行加密 * @Date 2022/5/13 14:05 * @Param [args] * @return void */
    public void encrypt() throws Exception { 
        
        Cipher cipher = Cipher.getInstance("RSA");

        String pubKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqHYUkgdQWK+1lNToWYitaV16ZT1cAsB/BQV3jlfLryzd6ZzqJmmDSxTaevOxiEh2KiSH6IGz1hJ2UkwP2yJqckZcoZ0XvDhLCvPyogjZAuuG68WkGIJpPii4r9W4XZHq8DyXZBFrzkzxb+AdYrmaT4nGA5ToYOg5bwtseMfOxcJwA12QMHQxJO8GnDScBivb0nGP3sFMtFKt+4mDGwHrAaUl5rQjiB7+m6el1zeuLVLNOXdi4veyq9aM3IFyHOc/UPX2XESLjJr7fk6wMUXFp8W22zhbc/m+3btH0wu9nbVHFzo8feolLXqq6IzEERWmIUL4cbJ5IvpHF6tCM5BwjwIDAQAB";
        X509EncodedKeySpec keySpec = new X509EncodedKeySpec(Base64.decodeBase64(pubKey));
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PublicKey publicKey = keyFactory.generatePublic(keySpec);

        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] bytes = cipher.doFinal("yg-chy".getBytes());
        String s = Base64.encodeBase64String(bytes);
        System.out.println(s);
    }

    /** * @Description //使用私钥进行解密 * @Date 2022/5/13 14:06 * @Param [args] * @return void */
    public  void decrypt() throws Exception{ 
        
        String priKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCodhSSB1BYr7WU1OhZiK1pXXplPVwCwH8FBXeOV8uvLN3pnOomaYNLFNp687GISHYqJIfogbPWEnZSTA/bImpyRlyhnRe8OEsK8/KiCNkC64brxaQYgmk+KLiv1bhdkerwPJdkEWvOTPFv4B1iuZpPicYDlOhg6DlvC2x4x87FwnADXZAwdDEk7wacNJwGK9vScY/ewUy0Uq37iYMbAesBpSXmtCOIHv6bp6XXN64tUs05d2Li97Kr1ozcgXIc5z9Q9fZcRIuMmvt+TrAxRcWnxbbbOFtz+b7du0fTC72dtUcXOjx96iUteqrojMQRFaYhQvhxsnki+kcXq0IzkHCPAgMBAAECggEACLCCkh+/dLunhaRP0eJ7c25ndFZsaxXr12H3T0fXEVOipLy71TxnEdXjCSmN1EZMlhLpUcRy9s1f/hG/VaHaVMetWobEZSiQMmHv94y2SPDGNl4s/zim3hZypFtFVcpDkJ3Hf1losq0EXS11xpRlUcn9BU1GiU0hPUmdEEPaNhgigPGT/nIw4kSGoW7ajk1DRC/dGDPeJl3VjzJE3o4+9scixN3wGpdBSvkXyj5aHpwR2xSnAMrWu5XJSNgNnTmnUQ/6NITYOfERcePw9dF8TXYB34KImiNCDrz4WCeRR3NSceYFYGm2FzYGCVmoPKR4ABJT1f1L59QRbhgFfca4EQKBgQDc7nKZa2iFC3T+aO9b1ARBg9P0dQ8MMGuOReFEw82ozB05oTGFbREQHvZTTv5L4EEKOQoDuQwzRT192XcMabd6km38wFVdYpAF5BDeAzy6UmW2KZvlnrIoq5S7qL2YxZNQTmosK+5TiogAez2X0YdVKXlA/ngM1AMlkaK1tCPy/wKBgQDDM4GETeknKU+OWzfsY/9sdRNrUf8Dku+mIBGTqXlvYRrohdNsDAhzOMXc3M1UchYUs4Y9/7aZdQXQhqs/Zexd9uOCrYmSceMFbtHhpYn2eW+nOCZacb7EuzeK1KAMnBw3cJd5SO1uIp4O7Z3Pa51DB+Su1Lfzb7hLbU/NhqPScQKBgFK9em26rAonoEknQ31Aidd/Z4HF1TzbZWyC/zqhmgP9bXSHyeQOVLWU4uuQSexgr/sEIZwDUW5iIAVhzBP6A50D+e0Omum+X/HU1/xNehDNiwoNyzTTmiVhHPKq31a3p9QLiffA/CCNYSHNBeQ1tFlQjvioVI15WTRYtncWX+BBAoGAHzYqHGyUvjVFyj5dp8epfL8PltZqjzi8ZvSzusebaiq9sbZMQvd9lmbahGEt17XSQAcgjONJYCos/tW5pg53B+NFJ4z19VuOcDzzBECC2c07BCLfRxDu7uf8jo9G9B02CctP/Q2jITwZx8tIs3TClYg6kZXjv+H6Nt1IqFVB9pECgYEAtZguA8iD6/ZM2Ly8/4WpwQUvmco2oDu7yCs+BdOQOvoRrQqhr6M3ILaktGVxaHN5Yft/TdAyi2WiiZ1BgfaNw1yM+iEIOGpGSuPfvZ8WoxwJLhSYbKh8M/8X1K0Nq4PdymrHRG7exVl5lQDieyNfSc0M73smkmZWhLztteAjApw=";
        PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(priKey));
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PrivateKey privateKey = keyFactory.generatePrivate(keySpec);
        Cipher cipher = Cipher.getInstance("RSA");
        cipher.init(Cipher.DECRYPT_MODE, privateKey);
        String content = "FXdqPfAdU6L+eAwgyn03YPkkiARttQwkpp6T77km+aUaE4ye5mBGxcLkSqogldNOp7yYbvhrZyfFmpPWsdpzYn4NjAzEV0v88cBp0YkNUQFR6ckD3yRA/K2WH+I9H1Rgwuad82hmfp11K6fb3v08t89rsoltUMu51dUqeA48Tl2fAxr9lnalVNNltypsEF9F2C+zJFFXqNhPBTV/a2gvAimkDw2EH4Vo3aVNYLlgUtTH2PNaxjRo1ceqZjsSBKmren2KUnVoN7NXdKHKoDhPVReQT8uhcsDQm+qBZfZW6qicqvQBhZ9RIcLXWaBgNz8Vd40l4vTUyumjmOA2wc/0hw==";
        byte[] bytes = cipher.doFinal(Base64.decodeBase64(content));
        System.out.println(new String(bytes));
    }
}

标签: 06丝印z19三极管

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台