开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1042|回复: 2
收起左侧

[精币悬赏] 翻译一段 java代码 翻译成易语言

[复制链接]
结帖率:74% (23/31)
发表于 2020-7-1 22:05:27 | 显示全部楼层 |阅读模式   福建省厦门市
60精币
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;

import java.security.Security;
import java.util.Arrays;

import javax.crypto.Cipher;
import javax.crypto.spec.GCMParameterSpec;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Base64;
import org.bouncycastle.jce.provider.BouncyCastleProvider;
import org.junit.Test;

import com.github.windpapi4j.WinDPAPI;
import com.github.windpapi4j.WinDPAPI.CryptProtectFlag;
import com.mlkui.common.helper.HexDumpHelper;

public class ChromeCookieTest
{
        @Test
        public void test()
        {
                Security.addProvider(new BouncyCastleProvider());

                int keyLength = 256 / 8;
                int nonceLength = 96 / 8;
                String kEncryptionVersionPrefix = "v10";
                int GCM_TAG_LENGTH = 16;

                try
                {
                        byte[] encryptedKeyBytes = Base64.decodeBase64(
                                        "RFBBUEkBAAAA0Iyd3wEV0RGMegDAT8KX6wEAAACtP/XjPc54RaDgxj8Eef6QAAAAAAIAAAAAABBmAAAAAQAAIAAAAHICJrBWxxkRwEH6iO4zyo4cupd1kX23HTvlGjbf3rAAAAAA6AAAAAAgAAIAAAANV1OHmguiAyFxk6vAFOb+K1bwNCjUshXByRmwbXYd8mMAAAAKzGG5QNq4NliAapY5N3rKaS+kqJNmYJJrla5tZ7LS/9Z39jogumIA0zjkypIiG7EkAAAACrrL+zxA4OSuc8onLmqfimVj/lhh21n8ERnTNMk+67dFnoy2KzcUgk8mJfKforKbgNRH5RcVcNOh4Lz/LcUgMu");
                        System.out.println(new String(encryptedKeyBytes));
                        assertTrue(new String(encryptedKeyBytes).startsWith("DPAPI"));
                        encryptedKeyBytes = Arrays.copyOfRange(encryptedKeyBytes, "DPAPI".length(), encryptedKeyBytes.length);

                        WinDPAPI winDPAPI = WinDPAPI.newInstance(CryptProtectFlag.CRYPTPROTECT_UI_FORBIDDEN);
                        byte[] keyBytes = winDPAPI.unprotectData(encryptedKeyBytes);
                        System.out.println(Base64.encodeBase64String(keyBytes));
                        System.out.println(HexDumpHelper.dumpHexString(keyBytes));
                        assertEquals(keyLength, keyBytes.length);

                        byte[] encryptedValue = new byte[] { (byte) 0x76, (byte) 0x31, (byte) 0x30, (byte) 0x74, (byte) 0x90, (byte) 0x31, (byte) 0x14, (byte) 0xed, (byte) 0x50, (byte) 0xac, (byte) 0x4e, (byte) 0xf9, (byte) 0x7e, (byte) 0x6b, (byte) 0x62, (byte) 0x17, (byte) 0x01, (byte) 0x52, (byte) 0x5f,
                                        (byte) 0x52, (byte) 0x78, (byte) 0xcd, (byte) 0x24, (byte) 0x1a, (byte) 0x34, (byte) 0x0f, (byte) 0xc2, (byte) 0xbd, (byte) 0x2a, (byte) 0xc3, (byte) 0x2f, (byte) 0x00, (byte) 0x5d, (byte) 0x0d, (byte) 0x56, (byte) 0xf5, (byte) 0xa6, (byte) 0x84, (byte) 0x59 };
                        System.out.println(HexDumpHelper.dumpHexString(encryptedValue));

                        // Obtain the nonce.
                        byte[] nonce = Arrays.copyOfRange(encryptedValue, kEncryptionVersionPrefix.length(), kEncryptionVersionPrefix.length() + nonceLength);
                        System.out.println(HexDumpHelper.dumpHexString(nonce));

                        // Strip off the versioning prefix before decrypting.
                        encryptedValue = Arrays.copyOfRange(encryptedValue, kEncryptionVersionPrefix.length() + nonceLength, encryptedValue.length);
                        System.out.println(HexDumpHelper.dumpHexString(encryptedValue));

                        Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
                        SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");
                        GCMParameterSpec gcmParameterSpec = new GCMParameterSpec(GCM_TAG_LENGTH * 8, nonce);
                        cipher.init(Cipher.DECRYPT_MODE, keySpec, gcmParameterSpec);

                        String encryptedValueString = new String(cipher.doFinal(encryptedValue));
                        System.err.println(encryptedValueString);
                }
                catch (Exception ex)
                {
                        System.out.println(ex.toString());
                }
        }
}



补充内容 (2020-7-1 22:09):
懂的大神 帮个忙 谢谢!

头像被屏蔽
结帖率:100% (7/7)
发表于 2020-7-1 23:24:18 | 显示全部楼层   江苏省宿迁市
定制区欢迎你
回复

使用道具 举报

结帖率:84% (16/19)

签到天数: 2 天

发表于 2020-7-1 23:43:09 | 显示全部楼层   广东省深圳市
QQ1357702759
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表