{{TOC}}
X509EncodedKeySpec/PKCS8EncodedKeySpec
X509EncodedKeySpec用于转换公钥编码密钥,PKCS8EncodedKeySpec用于转换私钥编码密钥。
示例代码
KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA");
kpg.initialize(1024);
KeyPair keyPair = kpg.genKeyPair();
KeyFactory factory = KeyFactory.getInstance(kpg.getAlgorithm());
// 获取私钥
byte[] privateKeyBytes = keyPair.getPrivate().getEncoded();
System.err.println("privateKey1:" + Base64.getEncoder().encodeToString(privateKeyBytes));
// 还原私钥
PrivateKey privateKey = factory.generatePrivate(new PKCS8EncodedKeySpec(privateKeyBytes));
System.err.println("privateKey2:" + Base64.getEncoder().encodeToString(privateKey.getEncoded()));
// 获取公钥
byte[] publicKeyBytes = keyPair.getPublic().getEncoded();
System.err.println("publicKey1:" + Base64.getEncoder().encodeToString(publicKeyBytes));
// 还原公钥
PublicKey publicKey = factory.generatePublic(new X509EncodedKeySpec(publicKeyBytes));
System.err.println("publicKey2:" + Base64.getEncoder().encodeToString(publicKey.getEncoded()));
运行结果
privateKey1:MIIBSwIBADCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoEFgIUMFho5NdjFR3RQdsJeJY6ECg7HOo=
privateKey2:MIIBSwIBADCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoEFgIUMFho5NdjFR3RQdsJeJY6ECg7HOo=
publicKey1:MIIBuDCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYUAAoGBAI/y+aRw5ajDFCfj43gn6z0OcNR8/V9eJ0IFP69CkRf/nYxK0DDoL8JerI2OVtWenXkUNk4A8geZrRDxck+3WVPtg24DxJMU7qsKNTc2MyD1V5qhiRJCtQG9Oj+GsemOg1zUCgm5eEknMiOCajhCSMjz4sQcJucvzCSQMbHMg0kn
publicKey2:MIIBuDCCASwGByqGSM44BAEwggEfAoGBAP1/U4EddRIpUt9KnC7s5Of2EbdSPO9EAMMeP4C2USZpRV1AIlH7WT2NWPq/xfW6MPbLm1Vs14E7gB00b/JmYLdrmVClpJ+f6AR7ECLCT7up1/63xhv4O1fnxqimFQ8E+4P208UewwI1VBNaFpEy9nXzrith1yrv8iIDGZ3RSAHHAhUAl2BQjxUjC8yykrmCouuEC/BYHPUCgYEA9+GghdabPd7LvKtcNrhXuXmUr7v6OuqC+VdMCz0HgmdRWVeOutRZT+ZxBxCBgLRJFnEj6EwoFhO3zwkyjMim4TwWeotUfI0o4KOuHiuzpnWRbqN/C/ohNWLx+2J6ASQ7zKTxvqhRkImog9/hWuWfBpKLZl6Ae1UlZAFMO/7PSSoDgYUAAoGBAI/y+aRw5ajDFCfj43gn6z0OcNR8/V9eJ0IFP69CkRf/nYxK0DDoL8JerI2OVtWenXkUNk4A8geZrRDxck+3WVPtg24DxJMU7qsKNTc2MyD1V5qhiRJCtQG9Oj+GsemOg1zUCgm5eEknMiOCajhCSMjz4sQcJucvzCSQMbHMg0kn
SecretKeySpec
用于构建秘密密钥规范。
示例代码
KeyGenerator kg = KeyGenerator.getInstance("DES");
byte[] keyBytes = kg.generateKey().getEncoded();
// 输出秘密密钥
System.err.println("key1:" + Base64.getEncoder().encodeToString(keyBytes));
// 还原秘密密钥
SecretKeySpec secretKey1 = new SecretKeySpec(keyBytes, kg.getAlgorithm());
System.err.println("key2:" + Base64.getEncoder().encodeToString(secretKey1.getEncoded()));
// 或
DESKeySpec desKeySpec = new DESKeySpec(keyBytes);
SecretKeyFactory factory = SecretKeyFactory.getInstance(kg.getAlgorithm());
SecretKey secretKey2 = factory.generateSecret(desKeySpec);
System.err.println("key3:" + Base64.getEncoder().encodeToString(secretKey2.getEncoded()));
运行结果
key1:yxn3ATfIncg=
key2:yxn3ATfIncg=
key3:yxn3ATfIncg=
网友评论