Tag: bouncycastle

java.security.NoSuchProviderException:没有这样的提供者:BC

我正在使用AdvancedInstaller 9.8将我的javacode(webapplication)构建到安装程序。 通常我的应用程序运行正常。 使用Advanced Installer 9.8创建安装程序后,安装程序大小约为55 MB。 但是高级安装程序中有一个选项可以压缩为安装而生成的所有jar子。 如果我压缩jar子,安装程序大小约为16 MB。 但是当我使用Advanced Installer 9.8压缩时,我在执行KeyPairGenerator行时会遇到exception(如标题中所述) kpg = KeyPairGenerator.getInstance(“RSA”,“BC”) ; 在我的代码中。 KeyPairGenerator再次来自java.security。*; 有人可以告诉我,这个问题可能是什么原因。 我知道在使用AdvancedInstaller进行压缩时,可能会出现Advanced Installer压缩的问题。 但我的问题是java方面通常可能出现的问题,以解决这个问题。 (我的意思是可能的原因,就像任何文件可能被损坏(或)等任何其他原因),以便我可以从那里开始工作。

Java BouncyCastle Cast6Engine(CAST-256)加密

我正在尝试实现一个接收字符串的函数,并返回CAST-256中String的编码值。 以下代码是我在BoncyCastle官方网页上的示例后实现的( http://www.bouncycastle.org/specifications.html ,第4.1点)。 import org.bouncycastle.crypto.BufferedBlockCipher; import org.bouncycastle.crypto.CryptoException; import org.bouncycastle.crypto.engines.CAST6Engine; import org.bouncycastle.crypto.paddings.PaddedBufferedBlockCipher; import org.bouncycastle.crypto.params.KeyParameter; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.bouncycastle.util.encoders.Base64; public class Test { static{ Security.addProvider(new BouncyCastleProvider()); } public static final String UTF8 = “utf-8”; public static final String KEY = “CLp4j13gADa9AmRsqsXGJ”; public static byte[] encrypt(String inputString) throws UnsupportedEncodingException { final BufferedBlockCipher cipher = new PaddedBufferedBlockCipher(new CAST6Engine()); […]

没有正确加密和解​​密

我写的以下AES类用于加密和解密,这有点时髦。 当我复制AES对象并且我选择加密纯文本,然后我立即尝试解密我刚刚加密的文本时,它不会完全解密(并且每次都有不同的方式)。 例如,我正在使用这样的简单JSP初始化它: <% String hexMessage = "0xe800a86d90d2074fbf339aa70b6d0f62f047db15ef04c86b488a1dda3c6c4f2f2bbb444a8c709bbb4c29c7ff1f1e"; String keyText = "12345678abcdefgh";//*/ AES e = new AES(); //e.setKey(keyText); String plaintext = "This should decode & encode!"; String ciphertext = e.encrypt(plaintext); out.println(ciphertext); out.println("”); out.println(e.decrypt(ciphertext)); %> 输出因页面加载而异:一次: 0x663D64E6A0AE455AB3D25D5AF2F77C72202627EBA068E6DEBE5F22C31 This should decoÁdìmèåV4ÉkÓ 另一个: 0x5F5CF31961505F01EA9D5B7D7BFC656BD3117725D2EA041183F48 This s2??XêêÈ&ÀܧF?ÒDÒ? 等等: 0xC7178A34C59F74E5D68F7CE5ED655B670A0B4E715101B4DDC2122460E8 Tà@¼R×ËÖ?_U?xÎÚ?Ba?b4r!©F 我创建的课程如下: package com.myclass.util; import java.io.UnsupportedEncodingException; import java.security.InvalidAlgorithmParameterException; import java.security.InvalidKeyException; […]

使用“RSA / ECB / PKCS7Padding”与Bouncy Castle

我尝试使用“RSA / ECB / PKCS7Padding”进行加密。 JCE不支持它。 所以我下载了Bouncy Castle,但似乎Bouncy Castle也不支持这种转变。 以下代码: Security.insertProviderAt(new BouncyCastleProvider(), 1); Cipher cipher = Cipher.getInstance(“RSA/ECB/PKCS7Padding”); 投 Caused by: java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA/ECB/PKCS7Padding at javax.crypto.Cipher.getInstance(Cipher.java:524) …. Caused by: javax.crypto.NoSuchPaddingException: Unsupported padding PKCS7Padding at sun.security.pkcs11.P11RSACipher.engineSetPadding(P11RSACipher.java:129) at javax.crypto.Cipher$Transform.setModePadding(Cipher.java:360) at javax.crypto.Cipher.getInstance(Cipher.java:517) … 4 more 我做得对吗? TIA。

bouncycastle错误“JCE无法使用jar-with-dependencies”对提供程序BC进行身份validation

我正在创建一个使用bouncycastle的java独立应用程序 。 一切都在日蚀中起作用。 我正在创建一个具有 这种 依赖关系的jar 。 当我使用“java -jar myapp-0.0.1-SNAPSHOT-jar-with-dependencies.jar”运行应用程序时。 我收到以下错误: java.io.IOException: exception encrypting data – java.lang.SecurityException: JCE cannot authenticate the provider BC 我的代码: Security.addProvider(new BouncyCastleProvider()); String keystoreDirectory = “C:/myapp/security”; File file = new File(keystoreDirectory + “/” + PRIVATE_KEY_FILE); if (!file.isFile()) { try { Configuration idOrganization = configurationBoundary.find(Configuration.ID_ORGANIZATION); KeyStore store = KeyStore.getInstance(“PKCS12”, SECURITY_PROVIDER); char[] password […]

validation在Java中的golang中生成的rsa.SignPKCS1v15签名

我试图让Javavalidation签名的SHA-1哈希,但它一直返回false。 我在Go中有以下代码,它生成一个RSA密钥对并签名并返回任何命中/符号端点以及hex编码哈希和公钥模数和指数的消息: package main import ( “crypto” “crypto/rand” “crypto/rsa” “encoding/hex” “encoding/json” “fmt” “io” “net/http” “strconv” ) var PrivKey *rsa.PrivateKey type Message struct { Message string `json:”message”` } func (msg *Message) Decode(r io.Reader) error { return json.NewDecoder(r).Decode(&msg) } type Signature struct { Hash string `json:”hash”` Signature string `json:”signature”` N string `json:”N”` E string `json:”E”` } func […]

Java Diffie-Hellman密钥交换

我正在尝试执行代码来执行Diffie-Hellman密钥交换。 我从在线示例中获取代码(忘记现在的位置)。 我不得不导入bouncycastle.jar,我假设它一直在执行。 我的代码: package testproject; import java.math.BigInteger; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.MessageDigest; import java.security.SecureRandom; import java.security.Security; import javax.crypto.KeyAgreement; import javax.crypto.spec.DHParameterSpec; public class KeyGen { private static BigInteger g512 = new BigInteger(“1234567890”, 16); //generates a random, non-negative integer for Base private static BigInteger p512 = new BigInteger(“1234567890”, 16); //generates a random, non-negative integer for […]

Bouncycastle PGP解密并validation

我正在尝试使用java BouncyCastle库解密和validationPGP消息,但遇到了问题,抱怨PartialInputStream的过早结束。 我知道加密工作正常,因为我可以在命令行上使用gpg解密和validation使用加密函数创建的消息。 这是代码: public static void signEncryptMessage(InputStream in, OutputStream out, PGPPublicKey publicKey, PGPPrivateKey secretKey, SecureRandom rand) throws Exception { out = new ArmoredOutputStream(out); PGPEncryptedDataGenerator encryptedDataGenerator = new PGPEncryptedDataGenerator(new BcPGPDataEncryptorBuilder(PGPEncryptedData.AES_256).setWithIntegrityPacket(true).setSecureRandom(rand)); encryptedDataGenerator.addMethod(new BcPublicKeyKeyEncryptionMethodGenerator(publicKey)); OutputStream compressedOut = new PGPCompressedDataGenerator(PGPCompressedData.ZIP).open(encryptedDataGenerator.open(out, 4096), new byte[4096]); PGPSignatureGenerator signatureGenerator = new PGPSignatureGenerator(new BcPGPContentSignerBuilder(publicKey.getAlgorithm(), HashAlgorithmTags.SHA512)); signatureGenerator.init(PGPSignature.BINARY_DOCUMENT, secretKey); signatureGenerator.generateOnePassVersion(true).encode(compressedOut); OutputStream finalOut = new PGPLiteralDataGenerator().open(compressedOut, […]

RSA的加密数据长度非常大

我希望加密数据的长度与原始文本的长度相同,因为我必须遵守长度约束。 我正在使用BouncyCastle 。 这是生成密钥对的代码: KeyPairGenerator keyGen = KeyPairGenerator.getInstance(“RSA”); keyGen.initialize(512); KeyPair keypair = keyGen.genKeyPair(); PublicKey pub = keypair.getPublic(); byte[] pubs = pub.getEncoded(); 这是我的加密代码: Cipher cipher = Cipher.getInstance(“RSA/ECB/PKCS1PADDING”); PublicKey pk = KeyFactory.getInstance(“RSA”).generatePublic(new X509EncodedKeySpec(pubs)); cipher.init(Cipher.ENCRYPT_MODE, pk); byte[] cipherBytes = cipher.doFinal(plainArray); 编码数据非常大,我可以做什么做小原始数据?

BouncyCastle安装问题

我正在尝试将BouncyCastle添加为Windows XP Pro上的安全提供程序,因此我可以使用它根据此处的说明向Android应用程序添加一些证书。 不幸的是我无法让它添加提供者。 我有: 将提供程序下载到C:\Program Files\Java\jre6\lib\ext\ 。 将C:\Program Files\Java\jre6\lib\ext\bcprov-jdk16-146.jar到%CLASSPATH% 。 将security.provider.7=org.bouncycastle.jce.provider.BouncyCastleProvider添加到java.security(7是顺序中的下一个int)。 当我跑: keytool -import -v -trustcacerts -alias 0 -file mycert.crt -keystore mystore.bks -storetype BKS -providerName org.bouncycastle.jce.provider.BouncyCastleProvider -storepass mypassword 我收到以下错误消息: keytool error: java.lang.ClassNotFoundException: org.bouncycastle.jce.provider.BouncyCastleProvider 我也试过动态添加它: import java.security.Provider; import java.security.Security; import java.util.Enumeration; import org.bouncycastle.jce.provider.BouncyCastleProvider; public class BouncyCastleMain { public static void main(String[] args) throws Exception { […]