首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript中用于javax.crypto的备用代码

JavaScript中用于javax.crypto的备用代码
EN

Stack Overflow用户
提问于 2016-12-02 10:46:43
回答 1查看 676关注 0票数 3

我希望在JavaScript中实现下面的代码,而不是使用javax.crypto包。

下面的代码将使用AES生成密钥。

代码语言:javascript
复制
    KeyGenerator kgen;
    String key;
    try {
        kgen = KeyGenerator.getInstance("AES");
        kgen.init(128);
        SecretKey secretkey = kgen.generateKey();
        BASE64Encoder encode = new BASE64Encoder();
        key = encode.encode(secretkey.getEncoded());
    } catch (NoSuchAlgorithmException e) {
       // exceptionLogFile(e, null);
        e.printStackTrace();
        key = "Error@SecretKeyGeneration: No Such Algorith Exception. " + e.getMessage();
    } catch (Exception e) {
       // exceptionLogFile(e, null);
        e.printStackTrace();
        key = "Error@SecretKeyGeneration: " + e.getMessage();
    }
    return key;

这在Java中非常有效,现在任何人都可以推荐我在JavaScript中的替代方案。

我已经了解了Crypto.js,但是我可以在这里使用,而不是理解。

对于加密和解密,我使用的是"AES/ECB/PKCS5Padding",所以它与javascript代码兼容吗?

请帮帮忙。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-03 10:40:52

AES密钥只是由随机字节组成。因此,对于128个字节键,您可以这样做:

代码语言:javascript
复制
var key = CryptoJS.lib.WordArray.random(128/8);

并对其进行编码:

代码语言:javascript
复制
var keyBase64 = CryptoJS.enc.Base64.stringify(key);

当然,密钥不会与之前生成的密钥相同,您需要解码先前生成的基64编码密钥。

若要使用该键,请使用显式键参数:

代码语言:javascript
复制
var encrypted = CryptoJS.AES.encrypt("Message", key, { mode: CryptoJS.mode.ECB});

PKCS#7填充--与PKCS#5填充相同--已经是默认的,欧洲央行不使用IV。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40930369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档