Tag: rsa

JavaCard中SDA和DDA之间的区别?

我有一个小程序(您可以看一下JavaCard小程序无法使用RSA加密 )。 Applet在构造函数中生成RSA公钥和私钥,并使用APDU命令加密某些​​字节数组。 Applet在文档中使用KeyBuilder.LENGTH_RSA_2048生成公钥和私钥,卡片令人遗憾,JavaCard仅在DDA中支持2048位密钥长度。 所以问题是什么是DDA和SDA。 他们之间的差异? 主要问题是:如何在这种模式下安装(或运行?)applet? 我发现: 更新1 :SDA – 静态数据认证DDA – 动态数据认证

Java生成RSA密钥对并转换为PEM – 但OpenSSL函数PEM_read_bio_RSA_PUBKEY返回null

我使用以下代码生成RSA密钥对并将其转换为PEM。 但是当我使用OpenSSL函数时, PEM_read_bio_RSA_PUBKEY返回null。 Java代码: public static RSAKeyPair creatKeyPair(int keySize) throws Exception { KeyPairGenerator keyGen = KeyPairGenerator.getInstance(ALGORITHM); keyGen.initialize(keySize, new SecureRandom()); return getRSAKeyPair(keyGen.genKeyPair()); } private static RSAKeyPair getRSAKeyPair(KeyPair keyPair) throws Exception { RSAKeyPair rsaKeyPair = new RSAKeyPair(); rsaKeyPair.PrivateKey = rsaKeyToPEMFormat(keyPair.getPrivate()); rsaKeyPair.PublicKey = rsaKeyToPEMFormat(keyPair.getPublic()); return rsaKeyPair; } private static String rsaKeyToPEMFormat(Key key){ StringWriter writer = new StringWriter(); //org.bouncycastle.openssl.PEMWriter […]

错误:RSA密钥长度必须至少为512位?

我正在尝试创建一个使用模数和指数的应用程序来生成RSA的公钥。 但是,存在模数和指数都可能是hex值的问题。 这是我生成密钥的代码,标有 – <—的行是发生错误的地方。 RSAPublicKeySpec spec = new RSAPublicKeySpec(new BigInteger(1,hexToByte(rsaJSON.publickey_exp)),new BigInteger(1,hexToByte(rsaJSON.publickey_mod))); KeyFactory factory = KeyFactory.getInstance(“RSA”); PublicKey pub = factory.generatePublic(spec); > 4)) .append(HEXES.charAt((b & 0x0F))); } return hex.toString(); } public static byte[] hexToByte( String hexString){ int len = hexString.length(); byte[] ba = new byte[len / 2]; for (int i = 0; i < len; i […]

给定两个SSH2密钥,如何检查它们是否属于Java中的同一密钥对?

我正试图找到一种方法来validation两个SSH2密钥,一个私有密钥和一个公共密钥,属于同一个密钥对。 我使用JSch来加载和解析私钥。 更新:可以显示如何从私钥(SSH2 RSA)重新生成公钥的代码段将解决此问题。

RSA:如何在java中生成私钥并在C#中使用它?

我想在java中生成私钥,将其保存为某个文件中的64个基本编码字符串,然后使用此保存的文件加密C#中的某个短语。 我知道在java中生成密钥并用64 base编码。 我的问题是如何在C#中使用此密钥? 这是一个将私钥保存到文本文件中的java代码原型: KeyPairGenerator keyGen = KeyPairGenerator.getInstance(“RSA”); RSAKeyGenParameterSpec spec = new RSAKeyGenParameterSpec(1024, RSAKeyGenParameterSpec.F4); keyGen.initialize(spec); KeyPair keyPair = keyGen.generateKeyPair(); PrivateKey privateKey = keyPair.getPrivate(); writeToFile(“privateKey”, Base64.encode(keyPair.getPrivate().getEncoded())); 我想在C#中实现以下函数,但无法找到如何从私钥创建RSAParameters或RSACryptoServiceProvider public static string DecryptData(string privateKey64Base, string data64Base) { // create using privateKey64Base // create RSACryptoServiceProvider rsa using RSAParameters above // byte[] encryptedData = rsa.Encrypt(Convert.FromBase64String(data64Base); }

如何通过提供PrivateKey来获取RSA PublicKey?

我正在寻找一个Java函数,它将获得一个RSA PrivateKey并将返回正确的RSA PublicKey? 或者,是否有一个函数可以告诉我们RSA PrivateKey / PublicKey是否有效?

RSA。 Java加密.NET解密

我需要实现登录.NET Soap Web Service。 此Web服务有方法 AuthenticateUser(username, password) 和密码应使用RSA公钥加密。 在我想要做的下面: public static final String PUBLIC = “q/9CujExqL6rsMMO22WWIotoXDCw5KEmGQJqL9UJEfoErwZ9ZCm3OwMTSlAMSfoXEMA04Y1rhfYC3MtU/7dYEoREfsvOPGDBWanTKyMzv2otCfiURyQoghEdkhv3ipQQaaErT7lfBKobJsdqJlvxo4PCOUas2Z6YpoMYgthzTiM=”; public static final String EXPONENT = “AQAB”; public static PublicKey getPublicKey() throws Exception{ byte[] modulusBytes = Base64.decode(PUBLIC, 0); byte[] exponentBytes = Base64.decode(EXPONENT, 0); BigInteger modulus = new BigInteger(1, (modulusBytes) ); BigInteger exponent = new BigInteger(1, (exponentBytes)); RSAPublicKeySpec spec = […]

Java类中RSA加密的问题

public class MyEncrypt { public void saveToFile(String fileName, BigInteger mod, BigInteger exp) throws IOException { ObjectOutputStream oout = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(fileName))); try { oout.writeObject(mod); oout.writeObject(exp); } catch (Exception e) { throw new IOException(“Unexpected error”, e); } finally { oout.close(); } } public static void main(String[] args) throws Exception { MyEncrypt myEncrypt = new MyEncrypt(); […]

Java RSA加密不可重复?

我一直无法使用RSA公钥加密。 以下是重现问题的示例JUnit代码: public class CryptoTests { private static KeyPair keys; @BeforeClass public static void init() throws NoSuchAlgorithmException{ KeyPairGenerator keyGen = KeyPairGenerator.getInstance(“RSA”); SecureRandom random = CryptoUtils.getSecureRandom(); keyGen.initialize(2176, random); keys = keyGen.generateKeyPair(); } @Test public void testRepeatabilityPlainRSAPublic() throws EdrmCryptoException, InvalidKeyException, NoSuchAlgorithmException, NoSuchPaddingException, IllegalBlockSizeException, BadPaddingException{ byte[] plaintext = new byte [10]; Random r = new Random(); r.nextBytes(plaintext); Cipher […]

演示如何使用RSA公钥系统来交换实现机密性和完整性/身份validation的消息

我正在尝试演示使用RSA公钥系统来交换实现机密性和完整性/身份validation的消息。 我试图在客户端加密消息并将此信息发送到服务器端进行解密。 我遇到的问题是我的代码没有解密。 它给了我以下错误: javax.crypto.BadPaddingException: Data must start with zero at sun.security.rsa.RSAPadding.unpadV15(RSAPadding.java:308) at sun.security.rsa.RSAPadding.unpad(RSAPadding.java:255) at com.sun.crypto.provider.RSACipher.a(DashoA13*..) at com.sun.crypto.provider.RSACipher.engineDoFinal(DashoA13*..) at javax.crypto.Cipher.doFinal(DashoA13*..) at PKServer.decryptMessage(PKServer.java:36) at PKServer.main(PKServer.java:69) 公钥客户端代码: import java.io.*; import java.net.*; import java.security.*; import javax.crypto.*; public class PKClient { public static final int kBufferSize = 8192; public static void main(String[] args) throws Exception { try { // […]