我是一个新手angular前端开发人员,现在我需要访问其他开发团队的Java spring REST api。
为了获得http://apps.api.com/api/user/login接口,我需要发送带有头部的请求:Authorization:Bearer b517241b-e81d-430e-afb6-773527989b47和Content-Type:application/json。
要获得令牌b517241b-e81d-430e-afb6-773527989b47,我必须请求另一个接口http://apps.api.com/api/auth/token,然后我从该接口获得的结果如下:
{ "token": "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE0NTQwMzI5MDk2NzYsInN1YiI6InRva2VuIiwidG9rZW4iOiIrbjZEd1NDUGVMbXd0SGpCT2ZzZUhVRlwvS2NOMzBBTDRkXC9sWDlSVlI1UWxnXC9wV2M1VVNNREpCVDVSUnNWNHpadUFtNExWc3BIeDl1SmtESGhvZTI0dWhMcUNzeUFmZklYMTBkalVqVzFnOSt5QTN4eEg4TElQbzBoTDR5V0JhNnplWm9lVFcrZFE0dzd3MVhCazhLZFZwWGFmRmJMZ3RoXC9OdVE5REM1c3QxTllnSDB2aHRWZ0lha3VnZVlhOEFPU1c3eWVsOWFHcXhJN1hHM1FrbVwvYUE9PSIsImlzcyI6Imh0dHBzOlwvXC93d3cud2luZ21vbmV5LmNvbSJ9.uBQYvfTwadTG2QZ76tQN6-ETT1M8X72ltDe7xBCvEhA" }
我需要做的是,使用jwt解码令牌,然后使用AES 256 CBC解密它(我被困在这里了)。
我从后台开发者那里拿到了解密的代码,代码是java的:
private static final String AES_KEY = "HG47YZ3CR8";
public static String decrypt(String orignalText) throws ApplicationException {
try {
final MessageDigest md = MessageDigest.getInstance("SHA-256");
final byte[] digestOfPassword = md.digest(AES_KEY.getBytes("utf-8"));
final SecretKey key = new SecretKeySpec(digestOfPassword, "AES");
final Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(new byte[16]));
final byte[] plainTextBytes = Base64.decodeBase64(orignalText);
final byte[] encodeTextBytes = cipher.doFinal(plainTextBytes);
return new String(encodeTextBytes);
} catch (NoSuchAlgorithmException |
UnsupportedEncodingException |
IllegalBlockSizeException |
InvalidKeyException |
BadPaddingException |
NoSuchPaddingException | InvalidAlgorithmParameterException e) {
throw new ApplicationException(ErrorCode.GENERAL_FAIL, e);
}
}我一直在尝试搜索javascript库来编写与该java代码相同的解密,但我找不到合适的。
如果有人知道哪个javascript库与这段java代码相似,我将不胜感激。
发布于 2016-01-29 11:16:27
我不确定我真的会推荐使用你的前端来解密任何东西,因为这需要你的密钥在javascript库中,这实际上是允许每个人解密你的令牌。这就引出了一个问题,为什么你一开始就要加密。但是如果你真的需要在javascript中做到这一点,你可以查看SO answers here。
https://stackoverflow.com/questions/35075707
复制相似问题