小编use*_*492的帖子

AES GCM解密绕过JAVA中的身份验证

我有一些AES/GCM加密数据,想要解密它.我希望绕过身份验证解密它,因为数据不包含身份验证信息(数据由第三方应用程序加密).我尝试使用javax.crypto包进行解密,并且总是抛出标签不匹配错误.有没有办法绕过这个标签检查和解密数据.数据使用AES128加密,并使用12字节初始化向量.

编辑:我有一个临时解决方案来解决这个问题.不确定这是否是正确的方法.

            Key key = new SecretKeySpec(hlsKey, "AES");
            GCMParameterSpec gCMParameterSpec = new     GCMParameterSpec(96, initialisationVector);
            final Cipher c = Cipher.getInstance("AES/GCM/NoPadding", "BC");
            c.init(Cipher.DECRYPT_MODE, key, gCMParameterSpec);

            byte[] nodata = new byte[len * 2];
            System.arraycopy(cipherText, 0, nodata, 0, len);
            byte[] plaindata = new byte[len * 2];
            try { 

                int decrypted_index = 0;
                while (decrypted_index < len) {
                    int cp = c.update(nodata, decrypted_index, nodata.length - decrypted_index, plaindata, decrypted_index);//doFinal(nodata);
                    decrypted_index += cp;
                }
               if(decrypted_index>=len){
                   System.arraycopy(plaindata, 0, plainText, 0, len);
                   retvalue=1;
               }
            } catch (Exception e) { …
Run Code Online (Sandbox Code Playgroud)

java encryption aes-gcm

2
推荐指数
1
解决办法
789
查看次数

Java 日历奇怪的行为

我正在使用java中的日历对象将输入日期(年/月/日期等从网络获取)转换为纪元时间。我正在重用相同的日历对象。有时我从网络获取的年份是 0,并且没有对此进行过验证。一旦发生这种情况,每当我将日期转换为纪元时,我得到的纪元时间总是负数。这是有效的行为吗

请查找我在对此问题进行单元测试时得到的示例代码和结果。

    Calendar cal= Calendar.getInstance();        
    cal.set(Calendar.YEAR, 0); 
    System.out.println("time 1 : "+cal.getTimeInMillis());  
    System.out.println("Date 1 : "+new Date(cal.getTimeInMillis()));  

    cal.set(Calendar.YEAR, 2020); 
    System.out.println("time 2 : "+cal.getTimeInMillis());
    System.out.println("Date 2 : "+new Date(cal.getTimeInMillis()));  

    cal.set(Calendar.YEAR, 2010); 
    cal.set(Calendar.MONTH, 10);
    System.out.println("time 3 : "+cal.getTimeInMillis());
    System.out.println("Date 3 : "+new Date(cal.getTimeInMillis())); 
Run Code Online (Sandbox Code Playgroud)

此代码的输出为
时间 1:-62151385126938
日期 1:Sun Jul 04 11:51:13 IST 1

时间 2:-125866201126938
日期 2:7 月 4 日星期三 11:51:13 IST 2020

时间 3:-125540041126938
日期 3:11 月 4 日星期五 11:51:13 IST 2010

这是 java Calendar 的预期行为吗?

我的 JDK 版本是 OpenJDK 运行时环境 …

java calendar

1
推荐指数
1
解决办法
292
查看次数

标签 统计

java ×2

aes-gcm ×1

calendar ×1

encryption ×1