0 0

怎样将一个BigIntger转化为Key类型(java.security.Key)?5

    假定A和B需要加密通信,A生成对称密钥作为会话密钥,并用B的公钥加密发送给给B,然后B用自己的私钥解密,得到会话密钥,之后A、B就可以进行加密会话。但是B用自己的私钥解密A发送的密文,所得到的明文(即会话密钥)是BigIntger类型,而会话密钥需要Key类型(java.security.Key),请问怎样将BigIntger转化为Key呢?或者有其他的解决方法。
    就相当于用RSA的公钥将一个对称密钥Key加密,然后再用私钥解密,希望得到之前的Key,但是解密后得到的是一个BigIntger。问题是怎样将这个BigIntger转化为Key。(Key为java.security.Key)。
2014年5月04日 17:12

2个答案 按时间排序 按投票排序

0 0

采纳的答案

        BigInteger bi = ...
        byte[] keyData = bi.toByteArray();
        DESedeKeySpec dks = new DESedeKeySpec(keyData);

        // 创建一个密匙工厂,然后用它把DESKeySpec对象转换成
        // 一个SecretKey对象
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
        SecretKey key = keyFactory.generateSecret(dks);

        // Cipher对象实际完成解密操作
        Cipher cipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
        //加密模式或者解密模式
        cipher.init(mode, key);


要构造密钥,首先要得到byte[],然后就可以构建密钥了,以上代码示例是3DES的方法,也可以有DESKeySpec的,就可以生成DES的密钥了,由于是对应密钥,可以加密解密都是同一个Cipher,唯一不一样的,就是初始化的时候,调用的模式不一样。

2014年5月12日 14:15
0 0

类似于以下代码片段,可以很方便地从一个BigInteger里面得到公钥,其实得到私钥也类似.

 RSAPublicKeySpec spec = new RSAPublicKeySpec(
                    new BigInteger("927321219108191188192454569763745602147214015229557936097354256005974097464099944041666463372411387482328205814612927555494004002976236328694380670117007523840161137245287537169073992881854806711105661235339513837968681937188076986711955020950458557207058206667509795039363187844689446814329102216798122222277649"),
                    new BigInteger("65537"));

            PublicKey key = KeyFactory.getInstance("RSA").generatePublic(spec);

            Cipher cipher = Cipher.getInstance("RSA");
            cipher.init(Cipher.DECRYPT_MODE, key);
            byte[] encryt = cipher.doFinal(data);

2014年5月08日 15:07

相关推荐

    解决java.security.InvalidKeyException: Illegal key size

    在Java编程环境中,有时会遇到一个常见的错误:"java.security.InvalidKeyException: Illegal key size"。这个错误通常是由于Java安全策略的限制导致的,尤其是当你尝试使用超过默认限制的密钥长度(例如,超过128位...

    java.security.InvalidKeyException: Illegal key size 解决方案

    在Java编程中,`java.security.InvalidKeyException: Illegal key size` 是一个常见的错误,通常出现在加密或解密操作中,尤其是涉及到对称加密算法如AES(高级加密标准)时。这个错误表明您试图使用的密钥长度不受...

    微信支付接口 java.security.InvalidKeyException: Illegal key size

    对接微信接口中因为jdk8解密长度不够 报错 java.security.InvalidKeyException: Illegal key size 替换路径:(记得备份原有的文件) C:\Program Files\Java\jdk1.8.0_131\jre\lib\security

    java.security.InvalidKeyException:illegal Key Size

    在Java编程环境中,"java.security.InvalidKeyException: illegal Key Size" 是一个常见的错误,通常发生在加密或解密操作中。这个错误表示你试图使用的密钥长度超过了Java默认的安全限制。在给定的上下文中,这个...

    AES加密时抛出java.security.InvalidKeyException: Illegal key size or default parameter

    当在Java环境中使用AES加密时遇到 `java.security.InvalidKeyException: Illegal key size or default parameter` 这个异常,通常意味着密钥的长度超过了Java安全策略所允许的最大值。具体来说: - **非法密钥大小...

    javaAES错误解决办法java.security.InvalidKeyException:illegal

    如在加密过程中出现下面异常: java.security.InvalidKeyException:illegal Key Size 请将两个jar文件按下列操作完成: 如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件;如果安装了...

    java.security.InvalidKeyException: Illegal key size 更换的Jar包

    为了数据代码在传输过程中的安全,很多时候我们都会将要传输的数据进行...然而,在使用256位密钥加解密的时候,如果不进行特殊处理的话,往往会出现这个异常java.security.InvalidKeyException: Illegal key size。

    解决 java.lang.RuntimeException: Could not generate DH keypair异常处理所需的bcprov的jar

    bcprov-ext-jdk15on-1.60、bcprov-jdk15on-1.60两个包放到jre下的$JAVA_HOME/jre/lib/ext的路径下,然后配置$JAVA_HOME/jre/lib/security/java.security,找到security.provider.9,然后在这句话下面加上:security....

    JDK16的security包

    使用AES加密时,当密钥大于128时,代码会抛出java.security.InvalidKeyException: Illegal key size or default parameters Illegal key size or default parameters是指密钥长度是受限制的,java运行时环境读到的...

    SQL Server 建立安全连接。错误:“java.lang.RuntimeException: Could not generate DH keypair”

    1、修改jdk/jre/lib/security/java.security,加粗部分放到最前面,其它依次修改编号放到后面 security.provider.1=org.bouncycastle.jce.provider.BouncyCastleProvider security.provider.2=sun.security....

    jdk 密钥长度受限.zip java.security.InvalidKeyException: Illegal key size

    java.security.InvalidKeyException: Illegal key size; JDK自带的密钥库长度有限制,特殊需求,需要到官网下载 jdk 无限制权限策略文件。 查看博客:https://blog.csdn.net/dling8/article/details/84061948 Java...

    AES加密出现InvalidKeyException之Illegal key size解决方案

    今日遇到如下错误:java.security.InvalidKeyException: Illegal key size 因为美国法律限制,JAVA默认支持AES 128 Bit 的key, 如果你计划使用 192 Bit 或者 256 Bit key, java complier 会抛出 Illegal key size ...

    java.security.InvalidKeyException: Illegal key size or default

    如果执行上面代码时出现了“java.security.InvalidKeyException: Illegal key size or default parameters ”或类似的错误提示,很可能是超出了JDK 默认的秘钥长度造成的。需要在oracle官网下载local_policy.jar 、...

    JDK7源码 包含rt.jar包下的 sun包源码 sun.security包等源码

    总的来说,这个JDK7源码压缩包为开发者提供了一个深入研究Java平台和安全机制的宝贵资源。通过学习这些源码,开发者可以提升自己的技术水平,理解Java的内部运作,更好地优化代码,甚至参与到Java的开源项目中去。

    sun.security.ext.EC

    它们实现了`java.security.PublicKey`和`java.security.PrivateKey`接口,提供了加密和解密的功能。 3. **ECParameterSpec**: 这个类定义了椭圆曲线加密的参数,包括椭圆曲线、基点和域参数。这些参数对于保证加密...

    Java生成PublicKey方法

    Java 生成 PublicKey 方法是 Java 开发语言中一个重要的知识点,本文将对其进行详细的讲解。 首先,需要了解什么是 PublicKey?PublicKey 是一种加密算法中使用的公钥,用于加密和解密数据。在 Java 中,可以使用 ...

    GenerateKey.java EncryptClasses.java

    "GenerateKey.java"、"EncryptClasses.java"以及"Util"、"DecryptStart"这些标签暗示了这是一个关于Java加密和解密操作的项目。下面将详细讨论相关知识点。 1. **GenerateKey.java**: 这个文件很可能包含了生成...

    local_policy.jar和US_export_policy.jar资源.zip

    AES的256位密钥加解 Windows正常,linux上报错 java.security.InvalidKeyException: Illegal key size 异常原因:如果密钥大于128, 会抛出java.security.InvalidKeyException: Illegal key size 异常. 因为密钥...

    USB-Key.rar_USB KEY_java usb_java usb key_usb key开发_usbkey

    总结来说,USB Key与Java的结合为安全编程提供了一种强大的工具,开发者需要掌握Java USB API,理解USB Key的硬件特性和安全机制,才能有效地开发和应用USB Key。通过深入学习和实践,可以提升系统的安全性,并为...

    解决java和net之间SHA256withRSA签名问题

    在跨平台开发中,Java和.NET之间的互操作性是一个常见的需求。然而,由于它们各自的加密库和签名机制的差异,可能会遇到一些挑战,比如在使用SHA256withRSA算法进行签名和验证时的问题。本文将详细阐述如何解决Java...

Global site tag (gtag.js) - Google Analytics