Angular中的Crypto和Java中的BCrypt不匹配
创始人
2024-10-31 03:00:46
0

这是因为Angular中使用的Crypto库和Java中使用的BCrypt库加密算法不同造成的。解决方法是在Java中使用与Angular中Crypto库相同的加密算法,或在Angular中使用与Java中BCrypt库相同的加密算法。

以下是在Java中使用与Angular中Crypto库相同的加密算法的示例:

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;

public class CryptoUtil {

  public static String encrypt(String key, String initVector, String value) {
    try {
      IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
      SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");

      Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
      cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);

      byte[] encrypted = cipher.doFinal(value.getBytes());
      return Base64.encodeBase64String(encrypted);
    } catch (Exception ex) {
      ex.printStackTrace();
    }

    return null;
  }

  public static String decrypt(String key, String initVector, String encrypted) {
    try {
      IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
      SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");

      Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
      cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);

      byte[] original = cipher.doFinal(Base64.decodeBase64(encrypted));

      return new String(original);
    } catch (Exception ex) {
      ex.printStackTrace();
    }

    return null;
  }
}

在Angular中使用与Java中BCrypt库相同的加密算法的示例:

import * as bcrypt from 'bcryptjs';

const saltRounds = 10;

export function hashPassword(password: string): Promise {
  return bcrypt.hash(password, saltRounds);
}

export function comparePassword(password: string, hash: string): Promise {
  return bcrypt.compare(password, hash);
}

相关内容

热门资讯

重大来袭!(微信雀神小程序能开... 重大来袭!(微信雀神小程序能开挂)详细教程(辅助挂)的确真的有挂(有挂详情)-哔哩哔哩关于微信雀神小...
透视游戏!gg扑克发牌机制(最... 透视游戏!gg扑克发牌机制(最新版wpk)其实是真的有挂(透视)辅助教程(有挂方略)-哔哩哔哩是由北...
一分钟揭秘(wepOke)外挂... 一分钟揭秘(wepOke)外挂辅助插件(辅助挂)确实是真的有挂(2024已更新)(哔哩哔哩);科技详...
终于知道!轰趴十三水有后台(辅... 终于知道!轰趴十三水有后台(辅助挂)竟然真的有挂(详细教程)(有挂透明)-哔哩哔哩;亲真的是有正版授...
透视安卓版(pokerworl... 这是一款非常优秀的pokerworld下载 ia辅助检测软件,能够让你了解到pokerworld下载...
重大通报!(雀神广东麻将设置方... 重大通报!(雀神广东麻将设置方法)详细教程(透视)竟然是真的有挂(有挂了解)-哔哩哔哩;是一款可以让...
发现一款!拱趴大菠萝切牌规律(... 发现一款!拱趴大菠萝切牌规律(AAPOKeR)其实是真的有挂(辅助该)技巧教程(有挂方法)-哔哩哔哩...
推荐一款(智星德州)外挂辅助工... 推荐一款(智星德州)外挂辅助工具(辅助挂)果真真的有挂(2020已更新)(哔哩哔哩)需要回顾用户提供...
重磅来袭(wepoke代打)外... 重磅来袭(wepoke代打)外挂透明挂辅助工具(透视辅助)详细教程((2022已更新))(哔哩哔哩)...
三分钟了解!德扑手牌胜率计算工... 三分钟了解!德扑手牌胜率计算工具(辅助挂)的确是真的有挂(详细教程)(有挂教程)-哔哩哔哩;德扑手牌...