java - 为 React Native 客户端获取与服务器端 Java 代码类似的密文
问题描述
我是 React Native 的新手。服务器端的人用 Java 编写了加密逻辑,如下所示
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
@Service
public class AES {
@Autowired
static AesProps props;
private static String secretkey = "abcdefghijklmnopqhijklmnopq"; // Sample key
private static SecretKeySpec secretKey;
private static byte[] key;
public static void setKey(String myKey) {
MessageDigest sha = null;
try {
key = myKey.getBytes("UTF-8");
sha = MessageDigest.getInstance("SHA-1");
key = sha.digest(key);
key = Arrays.copyOf(key, 16);
secretKey = new SecretKeySpec(key, "AES");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
public static String encrypt(String strToEncrypt) {
try {
setKey(secretkey);
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return Base64.getEncoder().encodeToString(cipher.doFinal(strToEncrypt.getBytes("UTF-8")));
} catch (Exception e) {
System.out.println("Error while encrypting: " + e.toString());
}
return null;
}
我正在尝试找到一种在 React Native 中加密的方法,这将为我提供与上述 Java 代码相同的密码。我经历过,react-native-aes-crypto
但很多东西都不见了。喜欢怎么用PKCS5PADDING
,怎么做对应SecretKeySpec
。任何帮助将非常感激。
解决方案
推荐阅读
- reactjs - react在哪里声明变量
- html - 如何使用 LAMP 堆栈存储和访问博客内的图像?
- android - 当我运行此应用程序以使用片段使用 viewpager 时应用程序崩溃?
- python - 如何提取点阵LED显示屏显示的文字
- arrays - 如何在perl中将bigint转换为字节数组,类似于java
- javascript - 在选择中将第一个选项设置为灰色,将其他选项设置为黑色
- sql - 为什么在 peroid 日期中使用 date_part 和确切的日期参数查询数据之间的结果不同?
- angular - 如何控制组件使用左箭头和右箭头键盘一个angular2
- reactjs - axios同步取数据的问题
- d3.js - D3 树 - 如何扩展树以显示和突出显示所有同名节点?