Ich spiele mit RSA auf Android, und mir ist klar, dass die RSA-Verschlüsselung verschiedene Chiffretext mit dem gleichen Klartext und öffentlichen Schlüssel erzeugt, wegen Padding Gibt es eine Möglichkeit, denselben Chiffretext mit demselben Klartext und öffentlichen Schlüssel zu generieren?Ist es möglich, 2 identische RSA-Chiffretext mit dem gleichen Klartext und öffentlichen Schlüssel zu generieren?
Unterscheiden sich die digitalen Signaturen in Läufen bei gleichem Klartext und gleichem privaten Schlüssel, und gibt es eine Möglichkeit, dieselben digitalen Signaturen zu generieren?
Hier ist mein keygen:
KeyPairGenerator kpGenerator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
AlgorithmParameterSpec spec = null;
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR1 && Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
spec = new KeyPairGeneratorSpec.Builder(ctx)
.setAlias(mAlias)
.setSubject(new X500Principal("CN=" + mAlias))
.setSerialNumber(BigInteger.valueOf(1337))
.setStartDate(start.getTime())
.setEndDate(end.getTime())
.build();
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
spec = new KeyGenParameterSpec.Builder(mAlias,
KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
.setDigests(KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA512)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1)
.build();
kpGenerator.initialize(spec);
KeyPair kp = kpGenerator.generateKeyPair();
Hier ist, wie ich die Verschlüsselung:
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
KeyStore.PrivateKeyEntry entry = (KeyStore.PrivateKeyEntry) keyStore.getEntry(mAlias, null);
Cipher cip = null;
RSAPublicKey pubKey = (RSAPublicKey)entry.getCertificate().getPublicKey();
cip = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cip.init(Cipher.ENCRYPT_MODE, pubKey);
byte[] encryptBytes = cip.doFinal(challenge.getBytes());
Dank.
Können Sie uns zeigen, zu unterschreiben produzieren, wie die Verschlüsselung Sie? Der RSA-Algorithmus * allein ist deterministisch. Wenn also derselbe Klartext und öffentliche Schlüssel verwendet wird, sollte sich die verschlüsselte Ausgabe nicht unterscheiden. Wenn Sie Java [Cipher] (http://docs.oracle.com/javase/7/docs/technotes/guides/security/StandardNames.html#Cipher) verwenden, beginnen einige der Modi (zB CBC) mit eine zufällige IV, wenn nicht anders angegeben. – ephemient
Ja, Sie können eine Verschlüsselungszeichenfolge ohne Auffüllung anfordern. Aber warum willst du das machen? –
Wie würde ich eine verschlüsselte Zeichenfolge ohne Auffüllung anfordern? – user1118764