AES,RSA方式加解密,Windows服务器测试成功,但是部署到Linux服务器后无法使用。

AES:

问题:Java程序,在使用AES加密时发现。在Windows机器上编写测试,AES加解密均能正常使用,但服务部署到Linux服务器后,发现加解密无法正常使用了。

原因:AES加解密时,Window系统与Linux系统的随机数生成方式不同。造成不同服务器系统,加解密有差异。

原因定位于初始化密钥时,随机数问题:

public static SecretKey getKey (String strKey) {
         try {        
            KeyGenerator _generator = KeyGenerator.getInstance( "AES" );
            _generator.init(128, new SecureRandom(strKey.getBytes()));
                return _generator.generateKey();
        }  catch (Exception e) {
             throw new RuntimeException( " 初始化密钥出现异常 " );
        }
      }

解决:修改初始化密钥方式

public static SecretKey getKey(String strKey) {
         try {        
            KeyGenerator _generator = KeyGenerator.getInstance( "AES" );
             SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG" );
            secureRandom.setSeed(strKey.getBytes());
            _generator.init(128,secureRandom);
                return _generator.generateKey();
        }  catch (Exception e) {
             throw new RuntimeException( " 初始化密钥出现异常 " );
        }
      }

RSA:

更新前:

  /**
     * 根据指定的密文种子,生成并返回RSA密钥对。
     */
    private static synchronized KeyPair generateKeyPair() {
        try {
            keyPairGen.initialize(KEY_SIZE,
                    new SecureRandom(radamKey.getBytes()));
            oneKeyPair = keyPairGen.generateKeyPair();
            return oneKeyPair;
        } catch (InvalidParameterException ex) {
            ex.printStackTrace();
        } catch (NullPointerException ex) {
            ex.printStackTrace();
        }
        return null;
    }

解决:

 private static synchronized KeyPair generateKeyPair() {
        try {
            SecureRandom random = SecureRandom.getInstance("SHA1PRNG");//
            random.setSeed(radamKey.getBytes());//增加两行指定随机数算法为SHA1PRNG

            keyPairGen.initialize(KEY_SIZE, random);
            oneKeyPair = keyPairGen.generateKeyPair();
            return oneKeyPair;
        } catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }

RSA前台加密后台解密的应用

https://www.cnblogs.com/yadongliang/p/11639763.html#_label0

这里的generateKeyPair就是没有指定随机数算法导致我今天更新到现在,呜呜。。。。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值