Tag: cryptography

让java IAIK PKCS11包装器适用于nfast

我想让IAIK PKCS11包装器与nfast一起工作。 它总是期待pkcs11wrapper库文件并抛出错误 – java.lang.UnsatisfiedLinkError:pkcs11wrapper(在java.library.path中找不到) 如何使用HSM提供的库文件( /opt/nfast/toolkits/pkcs11/libcknfast.so )? 任何帮助都非常感谢和遗忘!

如何从RSAPrivateKey获取RSAPrivateCrtKey?

我有一个java.security.interfaces.RSAPrivateKey和相应的java.security.interfaces.RSAPublicKey包含(仅)模数,私有指数和公共指数。 如果我理解RSA正确,则应该可以恢复java.security.interfaces.RSAPrivateCrtKey(对于CRT键)的数字。 如果是这样,我该怎么办? (我假设已经有一些实现)。

将Java.Security.KeyPair转换为.NET RSACryptoServiceProvider

如何编码Java生成的RSA私有(和公共)密钥,以便可以在.NET中解码以便在RSACryptoServiceProvider使用? 我试过这段代码: var keyGen = KeyPairGenerator.GetInstance(“RSA”); keyGen.Initialize(2048); KeyPair keyPair = keyGen.GenerateKeyPair(); IPrivateKey privateKey = keyPair.Private; byte[] nativePrivateKey = privateKey.GetEncoded(); var nativeToRsa = new RSACryptoServiceProvider(); nativeToRsa.ImportCspBlob(nativePrivateKey); // throws a CryptographicException 我正在使用Xamarin.Android编写C#,但“原生”Java RSA密钥生成器比单声道生成器快得多。 所以我想使用Java,但我仍然需要能够与Windows人员交换公钥和/或私钥以与RSACryptoServiceProvider一起使用。 所以最终我可能需要/需要双向(Java RSACryptoServiceProvider)。 有没有人有任何指针? 谢谢。

使用Bouncy Castle Java API生成X.509证书

我正在尝试使用Bouncy Castle Java API生成X.509证书。 我找到了示例代码: http://www.bouncycastle.org/wiki/display/JA1/X.509+Public+Key+Certificate+and+Certification+Request+Generation 但是,在编译以下代码之后,JVM会显示错误消息,如下所示 Could not find the main class: org.bouncycastle.util.AllTests. Program will exit. 请注意, org.bouncycastle.util.AllTests将插入到Java构建路径中。 如何修复我的代码才能正常工作? import java.math.BigInteger; import java.util.Date; import org.bouncycastle.asn1.ASN1Object; import org.bouncycastle.asn1.ASN1Sequence; import org.bouncycastle.asn1.x500.X500Name; import org.bouncycastle.asn1.x509.AlgorithmIdentifier; import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; import org.bouncycastle.cert.X509CertificateHolder; import org.bouncycastle.cert.X509v1CertificateBuilder; import org.bouncycastle.crypto.params.RSAKeyParameters; import org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters; import org.bouncycastle.operator.ContentSigner; import org.bouncycastle.operator.DefaultDigestAlgorithmIdentifierFinder; import org.bouncycastle.operator.DefaultSignatureAlgorithmIdentifierFinder; import org.bouncycastle.operator.bc.BcRSAContentSignerBuilder; public class X509CertificateCreator{ AlgorithmIdentifier sigAlgId […]

固定长度64字节EC P-256使用JCE签名

我需要一个固定长度的64字节ECDSA签名和NIST P-256曲线。 该实现有使用JCE。 以下代码示例可以生成签名并进行validation。 Provider provSign = new SunEC(); Provider provVerify = new SunEC(); // generate EC key KeyPairGenerator kg = KeyPairGenerator.getInstance(“EC”, provSign); ECGenParameterSpec ecParam = new ECGenParameterSpec(“secp256r1”); kg.initialize(ecParam); KeyPair keyPair = kg.generateKeyPair(); PrivateKey privateKey = keyPair.getPrivate(); PublicKey publicKey = keyPair.getPublic(); try { // export public key KeyFactory kf = KeyFactory.getInstance(“EC”, provSign); ECPublicKeySpec publicKeySpec = […]

如何做Diffie Hellman密钥生成并在Java中检索原始密钥字节

我正在java中为现有程序编写测试工具。 作为这个的一部分,我需要生成一个Diffie Hellman密钥对,并以其原始(即未编码的字节)forms将公钥传递给另一个程序。 我可以使用以下代码成功使用密钥对: KeyPairGenerator kpg = KeyPairGenerator.getInstance(“DiffieHellman”); kpg.initialize(512); KeyPair dkp = kpg.generateKeyPair(); 但是,我似乎无法检索键的原始字节值:-(调用dkp.getPublic().getEncoded()以x509编码格式返回一个字节数组,但它的Key。 我有三种可能的前进方式: 找到一些以原始forms从上面获取关键数据的方法。 将密钥的x509编码解码为其原始格式 以允许访问原始密钥的不同方式生成密钥 但我不是如何去做任何一个(哪个会变得最好)? 任何帮助或建议将不胜感激!

PBEWITHSHA256AND128BITAES-CBC-BC在RedHat 6.4上创建java.security.NoSuchAlgorithmException

我们有一个使用Bouncy Castle的应用程序使用PBEWITHSHA256AND128BITAES-CBC-BC算法加密数据。 它在运行OpenJDK 1.7 Ubuntu运行良好。 但是当我们将它移动到也运行OpenJDK 1.7 RedHat 6.4 ,我们得到以下exception: java.security.NoSuchAlgorithmException 关于可能导致这种情况的任何想法。 我们如何在RedHat 6.4添加PBEWITHSHA256AND128BITAES-CBC-BC算法? ps应用程序在JBoss运行。 private String cryptoAlgorithm = “PBEWITHSHA256AND128BITAES-CBC-BC”; Security.addProvider(new BouncyCastleProvider()); // load passPhrase from configured external file to char array. char[] passPhrase = null; try { passPhrase = loadPassPhrase(passPhraseFile); } catch (FileNotFoundException e) { throw BeanHelper.logException(LOG, methodName, new EJBException(“The file not found: ” […]

将HMAC-SHA1从node.js转换为Java

我的任务是将一些现有的node.js代码转换为Java。 我觉得我很顺利,但现在我有点卡住了。 方法的输出似乎不匹配。 我正在做的是基于查询字符串创建SHA-1签名。 此查询字符串包含一些与查询相关的数据(与此问题无关)和API密钥。 重要 node.js中的api_secret字符串等同于Java中的Config.API_SECRET 。 示例查询字符串(在node.js和Java程序中它们相同): /events?festival=imaginate&pretty=1&size=100&from=0&key=SOME_KEY 实际代码 SHA-1 hmac在nodejs中初始化如下: const hmac = crypto.createHmac(‘sha1’, api_secret); SHA-1 mac在Java中初始化如下: final SecretKeySpec secretKeySpec = new SecretKeySpec(Config.API_SECRET.getBytes(“UTF-8”), “HmacSHA1”); final Mac hmac = Mac.getInstance(“HmacSHA1”); hmac.init(secretKeySpec); 接下来,node.js程序更新hmac( query参数如上所列): hmac.update(query, ‘ascii’); 我在Java中复制了这个( query参数等于node.js query参数): hmac.update(query.getBytes(“US-ASCII”)); 最后,在node.js程序中将字节字符串转换为SHA-1哈希: const signature = hmac.digest(‘hex’); 我找不到Java的确切翻译,但这是我的尝试,我认为这是关于同样的事情: 字节数组为hex函数 public static String byteArrayToHex(byte[] a) { StringBuilder […]

java.lang.IllegalArgumentException:string curve25519 not a OID bouncycastle 1.52

我正在尝试使用/ java bouncy castle 1.52实现为曲线25519生成一个密钥对 java.lang.IllegalArgumentException:string curve25519不是OID 这是我的代码: public KeyPair generateKeys() throws NoSuchAlgorithmException, NoSuchProviderException, InvalidAlgorithmParameterException { ECParameterSpec ecSpec = ECNamedCurveTable.getParameterSpec(“curve25519”); KeyPairGenerator g = KeyPairGenerator.getInstance(“ECDSA”, “BC”); g.initialize(ecSpec, new SecureRandom()); return g.generateKeyPair(); } 这段代码的结果是下面的堆栈跟踪: java.lang.IllegalArgumentException:string curve25519不是org.bouncycastle.asn1.ASN1ObjectIdentifier上的OID。(未知来源)org.bouncycastle.jcajce上的org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey.getEncoded(未知来源)位于org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPrivateKey。(未知来源)的.provider.asymmetric.ec.BCECPrivateKey.getPublicKeyDetails(未知来源)org.bouncycastle.jcajce.provider.asymmetric.ec.KeyPairGeneratorSpi $ EC。在com.poc.databank.encryption.BouncyCastleEncryption.generateKeys(BouncyCastleEncryption.java:22)的com.poc.databank.encryption.BouncyCastleTest.testApp(BouncyCastleTest.java:16)的sun.reflect.NativeMethodAccessorImpl上生成KeyPair(未知来源)。在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)的java.lang.reflect.Method.invoke(Method.java:)中的invoke0(本地方法) 606)在org.junit.runners.model。 FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:47)org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44 )org.junit.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)org.junit.runners.BlockJUnit4ClassRunner.runChild(org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) BlockJUnit4ClassRunner.java:70)org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:238)org.junit.runners.ParentRunner $ 1 .schedule(ParentRunner.java:63)org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:53)org.junit.runners org.eclipse.jdt.internal.junit4.runner.JUnit4Tes上org.junit.runners.ParentRunner.run(ParentRunner.java:309)的.ParentRunner $ 2.evaluate(ParentRunner.java:229) tReference.run(JUnit4TestReference.java:50)org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests( RemoteTestRunner.java:467)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java: 390)at […]

椭圆曲线点

目前我正在研究一个使用椭圆曲线的项目。 请给我一个解决方案,确定一个点是否在椭圆曲线上? 以及如何在椭圆曲线上得到一个点