Tag: 密钥生成器

在模数RSA密钥中获得额外1个字节,有时也用于指数

这是我的代码片段: int eValue = 79, t; int bitLength = 1024; // KeySize BigInteger e = new BigInteger(Integer.toString(eValue)); KeyPairGenerator kpg = KeyPairGenerator.getInstance(“RSA”); kpg.initialize(bitLength); KeyPair kp = kpg.generateKeyPair(); KeyFactory kfactory = KeyFactory.getInstance(“RSA”); RSAPublicKeySpec kspec = (RSAPublicKeySpec) kfactory.getKeySpec(kp.getPublic(), RSAPublicKeySpec.class); System.out.println(“Byte Length is : ” + kspec.getModulus().toByteArray().length); String testString; try { testString = new String (kspec.getModulus().toByteArray() , “ISO-8859-1”); StringBuilder […]

使用KeyGenParameterSpec.Builder等效替换KeyPairGeneratorSpec – 密钥库操作失败

不推荐使用以下方法 KeyPairGenerator generator = KeyPairGenerator.getInstance(“RSA”, “AndroidKeyStore”); KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(this) .setAlias(alias) .setSubject(new X500Principal(“CN=Sample Name, O=Android Authority”)) .setSerialNumber(BigInteger.ONE) .setStartDate(start.getTime()) .setEndDate(end.getTime()) .build(); generator.initialize(spec); 我遇到的替代品看起来像这样 KeyPairGenerator generator = KeyPairGenerator.getInstance(“RSA”, “AndroidKeyStore”); generator.initialize(new KeyGenParameterSpec.Builder (alias, KeyProperties.PURPOSE_SIGN) .setDigests(KeyProperties.DIGEST_SHA256) .setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PKCS1) .build()); 虽然我能够使用它来生成密钥对条目并加密该值,但我无法解密它 public void encryptString(String alias) { try { KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry)keyStore.getEntry(alias, null); RSAPublicKey publicKey = (RSAPublicKey) privateKeyEntry.getCertificate().getPublicKey(); String initialText […]