Tag: rsa

使用轻量级API生成Bouncy Castle RSA密钥对

令人惊讶的是,网上关于使用Bouncy Castle的轻量级API的信息非常少。 环顾四周后,我能够把一个基本的例子放在一起: RSAKeyPairGenerator generator = new RSAKeyPairGenerator(); generator.init(new RSAKeyGenerationParameters ( new BigInteger(“10001”, 16),//publicExponent SecureRandom.getInstance(“SHA1PRNG”),//prng 1024,//strength 80//certainty )); AsymmetricCipherKeyPair keyPair = generator.generateKeyPair(); 我对RSA和幕后发生的数学有基本的了解,所以我理解了publicExponent和strength是什么。 我认为publicExponent指的是phi(pq)的互质,并且从我收集的它可以是小的(如3),只要使用适当的填充。 但是,我不知道certainty是指什么(某些地方提到它可能指的是一个百分比,但我想确定)。 SecureRandom的使用是不言自明的。 RSAKeyGenerationParameters的文档完全没有价值(毫不奇怪)。 我唯一的猜测是它与生成的键的准确性有关,但我想再次确定。 所以我的问题是什么是certainty和publicExponent适当值? PS请不要回答“这取决于具体情况 – 您希望信息的安全性”。 假设最高程度的安全性(即4096位RSA密钥或更高)是非常安全的,除非另有说明……我也非常感谢链接,这些链接提供了使用Bouncy Castle的轻量级API的良好示例(我不是所有对JCA实施感兴趣或任何与之相关的例子)。

Java RSA加密

我试图来回编码一个简单的字符串“测试”。 public static String encode(Key publicKey, String data) throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException { byte[] byteData = data.getBytes(); // convert string to byte array Cipher cipher = Cipher.getInstance(ALGORITHM); // create conversion processing object cipher.init(Cipher.ENCRYPT_MODE, publicKey); // initialize object’s mode and key byte[] encryptedByteData = cipher.doFinal(byteData); // use object for encryption return new String(encryptedByteData); // […]

Android和Java中的RSA加密

我想用RSA加密加密字符串。 我的公钥/私钥生成并存储在DB中。 在android中,我使用这段代码: public static String encryptRSAToString(String text, String strPublicKey) { byte[] cipherText = null; String strEncryInfoData=””; try { KeyFactory keyFac = KeyFactory.getInstance(“RSA”); KeySpec keySpec = new X509EncodedKeySpec(Base64.decode(strPublicKey.trim().getBytes(), Base64.DEFAULT)); Key publicKey = keyFac.generatePublic(keySpec); // get an RSA cipher object and print the provider final Cipher cipher = Cipher.getInstance(“RSA”); // encrypt the plain text using the […]

用于Java的RSA算法库

我想为我的应用程序提供基于RSA算法的简单许可机制。 有没有免费的RSA库?

Java Security&BouncyCastle API让人感到困惑和困惑

我一直在尝试理解用于Java的BouncyCastle加密API。 不幸的是,我发现Java加密通常被服务提供者接口和术语所掩盖,以至于我无法理解实际做的事情。 我已经尝试过反复阅读必要的文档,但它只是难以理解,引入了许多远远超出我认为应该需要的概念。 我真正想要的是一个执行以下操作的类: public class KeyPair { public byte[] public; public byte[] private; } public class RSACrypto { public static KeyPair generateRSAKeyPair() { /*implementation*/} public static byte[] encrypt(byte[] data, byte[] publicKey) { /*impl*/} public static byte[] decrypt(byte[] encryptedData, byte[] privateKey) { /*impl*/ } } 抱歉,如果这是一个非常复杂的问题,可以问为“我真正想要的一切”。 任何关于Java加密和BouncyCastle阅读内容的指针都非常受欢迎。 任何有关Java加密系统实际布局的概述都非常受欢迎。

在PHP中使用RSA的MD5

我正在尝试在php中实现数字签名,如下面的java示例代码: Signature rsaSig = Signature.getInstance(“MD5withRSA”); RSAPrivateKey clientPrivateKey = readPrivateKeyFromFile(fileName); rsaSig.initSign(clientPrivateKey); String source = msg; byte temp[] = source.getBytes(); rsaSig.update(temp); byte sig[] = rsaSig.sign(); BASE64Encoder encoder = new BASE64Encoder(); return encoder.encode(sig); 我的PHP代码: $rsa = new Crypt_RSA(); $rsa->loadKey(‘…’); // in xml format $plaintext = ‘…’; $rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1); $signature = $rsa->sign($plaintext); 但看起来有些东西不见了。 我们应该得到与java代码返回相同的签名。任何人都可以指导我吗?

如果在线程hibernate之前,RSA Decrypt需要更长的时间

我主要担心的是:我有一个春季启动应用程序,A,使用其他模板调用另一个春季启动应用程序B。 B的响应包含需要解密的加密字段。 为了解密它,一次性在应用程序A中加载RSA私钥。 解密代码如下所示: Cipher rsaCipher2 = Cipher.getInstance(“RSA/ECB/PKCS1Padding”); rsaCipher2.init(Cipher.DECRYPT_MODE, Test.privateKey); rsaCipher2.update(encryptMessage); byte[] decryptedMessage = rsaCipher2.doFinal(); 如果我一个接一个地提交多个请求,我看到应答A在不同时间进行响应并且解密(仅上述4行)每次运行需要不同的时间,即使是相同的测试,从5ms到20ms,执行相同的数据。 这是正常的吗? 我本来期望有更多类似的持续时间。 关于如何将解密时间保持在最低限度的任何想法? 我尝试了一个密码池,但没有顺利进行。 为了看看我是否可以在应用程序之外复制行为,我执行了以下操作: 我使用RSA算法生成了一对密钥,我加密了一个字符串。 我在一个主线程中,在一个线程上一个接一个地运行解密,并且在5毫秒内平均进行解密 如果我做同样的事情,但在解密之前添加100ms的超时,则解密在20ms内平均进行。 (如果你问我在计算平均值时没有考虑超时)。 有人可以请说明为什么会发生这种情况,我该如何避免它。 我尝试在for语句之前初始化密码,但是我没有看到改进,我试图在一个单独的线程上运行解密,并且看到了一点点改进,但​​还远远没有原始结果。 使用RSA生成一对密钥 KeyPairGenerator keyGen = KeyPairGenerator.getInstance(“RSA”); keyGen.initialize(2048);the same thing, but add a timeout of 100ms before the decryption, the decryption is made on average in 20 ms. (in case […]

将RSA SecurID身份validation与j2ee服务器集成?

我希望将运行在JBoss上的J2EE应用程序与RSA的Access Manager v 8.1(它提供SecurID令牌的身份validation)集成。 应该对RSA的自定义登录模块进行哪些配置,以便以后集成到EAP? 到目前为止我发现的文档非常稀少。 RSA的网站上写着:“Java Runtime API和Admin API;运行时和管理员的Web服务接口”,但我还没有找到更多细节。 任何指针都表示赞赏。

读取DER格式java中的私钥

我有以下代码来读取PKCS#8格式的私钥 public void encryptHash(String hashToEncrypt, String pathOfKey, String Algorithm) { FileInputStream fis = null; byte[] encodedKey = null; try { File f = new File(pathOfKey); encodedKey = new byte[(int)f.length()]; fis = new FileInputStream(f); fis.read(encodedKey); fis.close(); KeyFactory kf = KeyFactory.getInstance(“RSA”); PrivateKey privateKey = kf.generatePrivate(new PKCS8EncodedKeySpec(encodedKey)); Signature rsaSigner = Signature.getInstance(“SHA1withRSA”); rsaSigner.initSign(privateKey); fis = new FileInputStream(hashToEncrypt); BufferedInputStream bis […]

Android-Java RSA解密

我需要从二进制字符串创建RSA算法的公钥。 我的代码是: String pubKey = “tihq/Gk3OUs5NzP+XTRKXBwSxHtB0TWn0RREcpXEtp316tyD9DzKaIbdKexb/mRr”; byte[] keyBytes = Base64.decode(pubKey,Base64.DEFAULT); //test if is correct: ok Log.d(“response keyBytes”,new String(Base64.encode(keyBytes,Base64.DEFAULT))); KeyFactory keyFactory = KeyFactory.getInstance(“RSA”); X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes); RSAPublicKey publicKey = (RSAPublicKey) keyFactory.generatePublic(spec); //PublicKey publicKey = (PublicKey) keyFactory.generatePublic(spec); 但我有这个错误: java.security.spec.InvalidKeySpecException: java.lang.RuntimeException: error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag