【问题标题】:How to do encryption/decyption using crypto js in ionic4?如何在 ionic 4 中使用加密 js 进行加密/解密?
【发布时间】:2019-12-14 18:03:04
【问题描述】:

我很麻烦,如何在ionic4中使用crypto js进行加密/解密?

我用java写了加密解密的代码

public static String encrypt(String str) 
{
    String encryptedString = str;

    try {
        byte[] utf8 = str.getBytes("UTF8");
        byte[] enc = encryptor.doFinal(utf8);
        encryptedString = Base64.encodeBase64URLSafeString(enc);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return encryptedString;
}

用于解密

public static String decrypt(String str) 
{
    String decryptedString = "";        
    try {
        byte[] dec = Base64.decodeBase64(str);
        byte[] utf8 = decryptor.doFinal(dec);
        decryptedString = new String(utf8, "UTF8");
    } catch (Exception e) {
        e.printStackTrace();
    } 
    return decryptedString;
}

密钥生成

public static void genKeyPair(int i)    {
    try {
        // generates DES key from string //
        key = new SecretKeySpec(Skey.getBytes(), "DES");

        // initialize the cipher with key //
        encryptor = Cipher.getInstance("DES");
        decryptor = Cipher.getInstance("DES");
        encryptor.init(Cipher.ENCRYPT_MODE, key);
        decryptor.init(Cipher.DECRYPT_MODE, key);

        System.err.println(java.util.Base64.getEncoder().encodeToString(key.getEncoded()));
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我想在ionic4中写同样的东西,请帮助我。我是ionic4(混合应用程序)的新手

【问题讨论】:

标签: angular ionic-framework encryption cryptojs caesar-cipher


【解决方案1】:

您的代码看起来像自定义加密/解密,您可以使用许多加密方法之一,例如 crypto-js,例如:

很简单,这里是示例代码

import * as utf8 from 'crypto-js/enc-utf8';
import * as AES from 'crypto-js/aes';

// Encryption
AES.encrypt(JSON.stringify(data),your_encKey).toString();

// Decryption
AES.decrypt(userdata, your_encKey).toString(utf8);

更多信息:READ HERE

我认为这段代码 sn-p 足以参考,并且会继续 帮助您使用 ionic4/angular 转换您的代码。

【讨论】:

  • 如何在 ionic 4 中生成密钥?
【解决方案2】:

我在 angular (IONIC 4) 中找到了解决方案,但符号字符与 java 代码不同

let key="AND$VBOA";
var keyHex = CryptoJS.enc.Utf8.parse(key);
var message = CryptoJS.enc.Utf8.parse(message);
var encrypted = CryptoJS.DES.encrypt(message, keyHex, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
});
console.log("Encrypted:="+encrypted.toString());

用于解密

var decrypted = CryptoJS.DES.decrypt({
    ciphertext: CryptoJS.enc.Base64.parse(encrypted)
}, keyHex, {
    mode: CryptoJS.mode.ECB,
    padding: CryptoJS.pad.Pkcs7
});
console.log("Derypted:="+decrypted .toString());

在离子中

Ecrypted: 6qPw1YkOopA=
Decrypted: Nitin

在 Java 中

Ecrypted: 6qPw1YkOopA
Decrypted: Nitin

在离子中

Ecrypted: oOmH6uQ4R/Q=
Decrypted: Message

在 Java 中

Ecrypted: oOmH6uQ4R_Q
Decrypted: Message

在离子中

Ecrypted: f+eTKAqlUwXnznPVyjTXWA==
Decrypted: engineer

在 Java 中

Ecrypted: f-eTKAqlUwXnznPVyjTXWA
Decrypted: engineer

在 Java "-" & 在 IONIC "+" & 在 ionic "/" & java "_" 中测试了这么多示例,在 ionic 中额外的 = 或 == 即将到来。那么这个示例代码有什么问题,请建议我。

【讨论】:

    猜你喜欢
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 2017-06-25
    • 2014-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多