Tag: cryptography

将SubjectPublicKeyInfo格式的公钥转换为RSAPublicKey格式java

PublicKey.getEncoded()返回一个包含SubjectPublicKeyInfo(x.509)格式的公钥的字节数组,如何将其转换为RSA公钥编码?

SUN JCE / Oracle JCE中的默认RSA填充

你能帮我指出什么是默认的RSA填充。 确切地说,如果我创建如下的密码实例,肯定java正在使用某种填充,因为加密文本字节长度总是显示256字节,用于2048 RSA密钥,无论纯文本是一个字符还是10个字符。 Cipher.getInstance(“RSA”) 如果在Cipher.getInstance(“RSA”)中没有指定填充,我想知道内部默认填充java使用的是什么。 是PKCS#1 v 1.5? 谢谢,山姆

使用Bouncy Castle的C#RSA解密

我得到了一个Base64编码加密字符串,它使用Bouncy Castle在Java中加密。 下面的示例Java代码段: Cipher cipher = Cipher.getInstance(“RSA/ECB/PKCS1Padding”); cipher.init(Cipher.ENCRYPT_MODE, key.getPublic()); byte[] encryptedText = cipher.doFinal(“xxxxx|xxxxx”.getBytes(“UTF-8”)); String encodedText = new BASE64Encoder().encode(encryptedText); 我需要使用Bouncy Castle解密生成的字符串,但是在C#中,我已经获得了关于如何在Java中执行此操作的代码片段,但我无法将其转换为C#(原因是我们正在构建.net站点,以及将成为Java站点中的iFrame.Java站点将把RSA加密字符串传递给.NET站点。 下面解密的示例Java代码: Cipher cipherDec = Cipher.getInstance(“RSA/ECB/PKCS1Padding”); cipherDec.init(Cipher.DECRYPT_MODE, key.getPrivate()); byte[] decodedText = new BASE64Decoder().decodeBuffer(encodedText); byte[] decryptedText = cipherDec.doFinal(decodedText); String finalValue = new String(decryptedText, “UTF-8”); 我从http://www.bouncycastle.org/csharp/下载了示例,但似乎没有输入字符串值来加密的示例,然后它通过加密/解密过程。 我已经给出了模数 , 公共指数 , 私有指数 , 素数P , 素数q , 素数指数p , […]

MessageDigest.getInstance(“SHA”)返回什么特定的哈希算法?

MessageDigest.getInstance(“SHA”)似乎工作并给我一个MessageDigest ,但我不知道它给了我什么算法。 是SHA-1还是SHA-0或..? 我对我的机器上发生的事情不感兴趣。 我想知道它是否会为所有有效的Java实现返回sha0或sha1(或者它是未定义的)。

使用JCE / JCA从主密钥中获取秘密

有人能指出我正确的方向吗? 我想使用JCE / JCA从主密钥中获取新密钥,我该如何实现? 问候。

如何使用Bouncy Castle编辑Java中的密码套件列表

以下代码列出了Java SE 8支持的密码套件: import java.io.IOException; import java.net.UnknownHostException; import java.util.Arrays; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLSocketFactory; public class ListCiphers { public static void main(String[] args) throws UnknownHostException, IOException { SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory(); String[] cipherSuites = factory.getSupportedCipherSuites(); System.out.println(Arrays.toString(cipherSuites)); } //end main } 我想创建配置了一些特定密码套件列表的SSL客户端。 我想使用的密码套件是标准化的,但Jva SE 8不支持。例如,这个密码在firefox中列出: ECDHE_ECDSA_WITH_AES_256_SHA 请帮助我以任何方式允许我编辑SSL客户端中的密码套件列表。 Bouncy Castle有助于此吗? 怎么样? 请一步一步地告诉我。 另外,如果您想通过使用python之类的其他语言来实现我想要的,请帮助我。

使用OpenSAML在Java中使用SAML 2.0解密加密的断言

尝试使用SAML 2.0解密加密断言时遇到问题。 我使用的库是OpenSAML Java库2.5.2。 加密的断言如下所示: 1H3mV/pJAlVZAst/Dt0rqbBd67g= … ENCRYPTED KEY HERE … … ENCRYPTED ASSERTIONS HERE … 我确实使用以下openssl命令将PEM格式的私钥转换为pkcs8格式: openssl pkcs8 -topk8 -nocrypt -inform PEM -in rsa_private_key.key -outform DER -out rsa_private_key.pk8 然后我准备尝试解密加密的断言。 这是我的Java代码: … // Load the XML file and parse it. File xmlFile = new File(“data\\token.xml”); InputStream inputStream = new FileInputStream(xmlFile); Document document = parserPoolManager.parse(inputStream); Element […]

Java Card DES生成器applet输出与online-tools输出不同

编写以下小程序以在APDU数据字段上执行DES加密/解密: package cryptoPack; import javacard.framework.APDU; import javacard.framework.Applet; import javacard.framework.ISO7816; import javacard.framework.ISOException; import javacard.framework.JCSystem; import javacard.framework.Util; import javacard.security.CryptoException; import javacard.security.DESKey; import javacard.security.KeyBuilder; import javacardx.crypto.Cipher; public class CryptoDES extends Applet { // Array for the encryption/decryption key private byte[] TheDES_Key = { (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) […]

带有NativePRNG和SHA1PRNG的SecureRandom

我需要生成加密强大的随机数和字节数组。 为此,我使用的是Java的SecureRandom类。 但我不确定在加密强度方面选择哪种PRNG算法。 以下哪个实例会产生更难以预测的数字? 或者他们是平等的? SecureRandom nativePrng = SecureRandom.getInstance(“NativePRNG”) SecureRandom sha1Prng = SecureRandom.getInstance(“SHA1PRNG”) 此外,我们能够使用“SUN”提供程序生成这些实例(例如SecureRandom.getInstance(“SHA1PRNG”, “SUN”) )。 这会有所作为吗? 提前致谢。

我们如何将字符串从PEM转换为DER格式

从以下格式发送字符串: —–BEGIN RSA PUBLIC KEY—– MIGHAoGBANAahj75ZIz9nXqW2H83nGcUao4wNyYZ9Z1kiNTUYQl7ob/RBmDzs5rY mUahXAg0qyS7+a55eU/csShf5ATGzAXv+DDPcz8HrSTcHMEFpuyYooX6PrIZ07Ma XtsJ2J4mhlySI5uOZVRDoaFY53MPQx5gud2quDz759IN/0gnDEEVAgED —–END RSA PUBLIC KEY—– 如何从此字符串构造PublicKey对象? 尝试了以下删除页眉和页脚和base64解码缓冲区 public static PublicKey getFromString(String keystr) throws Exception { //String S1= asciiToHex(keystr); byte[] keyBytes = new sun.misc.BASE64Decoder().decodeBuffer(keystr); X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes); KeyFactory kf = KeyFactory.getInstance(“RSA”); return kf.generatePublic(spec); } 这可能会作为无效的密钥格式失败,也会失败 java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException: algid parse error, not a sequence at sun.security.rsa.RSAKeyFactory.engineGeneratePublic(RSAKeyFactory.java:188) at […]