国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

若依ruoyi前端vue使用jsencrypt.js加密后端java進行RSA解密(前后端交互RSA加解密)

這篇具有很好參考價值的文章主要介紹了若依ruoyi前端vue使用jsencrypt.js加密后端java進行RSA解密(前后端交互RSA加解密)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

  • 1、前后端RSA加解密實現(xiàn)思路
  • 2、前端
  • 3、后端

1、前后端RSA加解密實現(xiàn)思路

按照約定來說公鑰一般用來加密,大家都可以獲取得到,私鑰用來解密,當然你也可以混著用,以下示例是前端通過加密,后端解密.

?-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ81AMIIBCgKCAQEA1+05vAf7m5NcLNLkRtsm
gp+QdzcW6MVdayGTGBJG0vUonkFJ1Zy4fKP//xg0nZdf8yrPf0LxtiVhK0CcZrFz
2heK3/RT4bWPvO5D+W93uf1lJYhj4huHza0TLaGen/25QQd65FLHy6CkGKtgYxlZx
FeJpONiX6QTOv1QvAVOi+sz+iNu2ODMLAYBMMTo269clFJHSzK2P6qAf1v5jhG6rh
cLOJDwFR/jeRnac/ZGyStKPPi4IsC8uvO6o8TmJ2B/CtfOTrAs710337M6YP2S1d
AP5pWZO936kNuatU4AJufTULQBOYclP0esFXCH3I8agU0zOYnIrpp0sJg9WrtL4ze
DQIDAQAB
-----END PUBLIC KEY-----

私鑰?

-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0B1AQEFAASCBKcwggSjAgEAAoIBAQDX7Tm8B/ubk1ws
0uRG2yaCn5B3NxboxV1rIZMYEkbS9SieQUnVnLh8o///GDSdl1/zKs9/QvG2JWEr
QJxmsXPaF4rf9FPhtY+87kP5b25/WUliGPiG4fNrRMtoZ6f/blBB3rkUsfLoKQYq
2BjGVnEV4mk42JfpBM6/VC18BU6L6zP6I244MwsBgEwxOjbr1yUUkdLMrY/qoB/W/
mOEbquFws4kPAVH+N5Gdpz9kbJK0o8+LgiwLy687qjxOYnYH8K185OsCzvXTffsz
pg/ZLV0A/mlZk73fqQ25q11QAm59NQtAE5hyU/R6wVcIfcjxqBTTM5iciumnSwmD1
au0vjN4NAgMBAA1ECggEAcjmXOiYK7yEEON4TTnxuIdmhRb+JyfdmVN78/lXky4JP
S3CES5FNcvoa2WqHovpKEswJ2muijFW30naqhhTHkY60s4Z/vT4b3Lk6kkBlds7X
6CIHjusGpy9MX12+XHyRzlaxGAaO1kulbJLGgF2IEyijuyOxMN6PNF2nRA9nfz5r
WqdPhpJgbcO0BRNdWlsriGMIdaEQs/4hvnNiggt9WnjREo2Obc5HPauwbx7ULQNu
XJ7Ur8uXwAkVFYcH+aHPx2T+ZQpkHCtTuG1e/DJY4+iaAZFJA+R9bcj/W5Iy+1XO
YWl0XJPH2bqsPloTvpcp3BovlXDdEFYyEn+SkmeJzQKBgQDzuqcR5mCDVynKXzkl
EIdQWBTFxBtSUa9CICNlvlP8GLFwq1dnoyhw91+Fz4VaZINGwsm2gvMqrMxA0TSR
wZqgWn7QNwFHmb+cU10YyKwaMRo6LjP5yE8hErDEhPWj1oIJwvZifsZVKdBspjvqO
1/1MX2bWCFIqJ3POz00u51f/uwKBgQDizDxmP9/bZqTpaIfOVZxLW7YG/e5EIIKW
GM0aJkatarBRzFBvUZ/VcVJhIta6ou98eW+TWrj2IOlUtO+Wkvwf3cmMU6DlEDKG
CxUreuo9h9GXeAb5ORrHCy9gZ37JM8tBD0LyzpCygndQLpyvZi5mZw0N2pZKIqOIN
BduLTWHI1wKBgQDb6MHtyKu0VeUDD8ADzVIKEC9N8Y+lSsaTJ2RI3N3yTGVtf2ux
uuk2ZDzwAzoTQTWhlwdhge3dx2PT5+9CxCi8Hmrle3vQGs1kQ2NwhT+jskIz1JRS
C79bFvKNR1d4qIaJKsiW7igBsZkAel1gnUmSq1GiNIfOOSKoqyq880fXGQKBgByh
LYq2y3p1xaGVSXd5hSZaKGtPiNFezT1HWjTP2iIwEpvwz8KNqkCWcpDChhq/UL4E
0lnmnOytEOdZg9kdK5uiW5cdqEyh3V/ll0sFPXdxwlbuqMim98NinRNtXSrm9+R5m
bju7IMsRwV/LNZTbs4MejBihJBNORmLgd2tpVEu3AoGAYtWz+TT8ZvDa9wDnMf85
vxWzCLlBNRhDhWrIKUu8INtooeMF0j7nm3L3gI2CXXh8xFOAFbeqvoEbX6/VR0SY
RxG562rjQs58hlzU0rYOm4Vh3ZIUd1UmHaxMj6PIgbmVZPB68T1KadqmzVV2YnCU
AzvNvgMYLBtak0/nB5HerYpM=
-----END PRIVATE KEY-----
?

2、前端?

//安裝好jsencrypt.js并引入(若依已經(jīng)添加該組件)src/utils/jsencrypt.js
import JSEncrypt from 'jsencrypt/bin/jsencrypt.min'

//在你需要使用的地方引入組件,比如下面的加密
import { encrypt } from '@/utils/jsencrypt'

//...
//將表單中的用戶名加密,根據(jù)submit提交到后端
const username = encrypt(userInfo.username);
//...

?3、后端

/**
 * 登錄方法
 * 
 * @param loginBody 登錄信息
 * @return 結(jié)果
 */
@PostMapping("/login")
public AjaxResult login(@RequestBody LoginBody loginBody)
{
	//RSA解密
	//前提是RSA的公鑰私鑰是匹配的,另外這里可以使用私鑰給字符串解密
    String username = RSAUtils.decryptRSADefault(RSAUtils.PRI_KEY, loginBody.getUsername());
    //...
}
    

/**
* RSA加解密工具類
*/
public class RSAUtils {

	//需要跟公鑰配對
    public static final String PRI_KEY =
            "MIIBVAIBAD5ANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n" +
            "7Nt+Pr5grxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n" +
            "PuH3o5wIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n" +
            "kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n" +
            "cSxQA5giCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n" +
            "DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n" +
            "YhovyloRYsM+5/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n" +
            "UP8iW5i1Qw0Y=";

    // 加密數(shù)據(jù)和秘鑰的編碼方式
    public static final String UTF_8 = "UTF-8";

    // 填充方式
    public static final String AES_ALGORITHM = "AES/CFB/PKCS5Padding";
    public static final String RSA_ALGORITHM = "RSA/ECB/PKCS1Padding";
    public static final String RSA_ALGORITHM_NOPADDING = "RSA";

    /**
     *  解密接收數(shù)據(jù)
     */
    public static String decryptReceivedData(PublicKey externalPublicKey, PrivateKey selfPrivateKey, String receiveData) throws InvalidKeyException, NoSuchPaddingException, NoSuchAlgorithmException, BadPaddingException, IllegalBlockSizeException, UnsupportedEncodingException, InvalidAlgorithmParameterException, DecoderException {

        @SuppressWarnings("unchecked")
        Map<String, String> receivedMap = (Map<String, String>) JSON.parse(receiveData);

        // receivedMap為請求方通過from urlencoded方式,請求過來的參數(shù)列表
        String inputSign = receivedMap.get("sign");

        // 用請求方提供的公鑰驗簽,能配對sign,說明來源正確
        inputSign = decryptRSA(externalPublicKey, inputSign);

        // 校驗sign是否一致
        String sign = sha256(receivedMap);
        if (!sign.equals(inputSign)) {
            // sign校驗不通過,說明雙方發(fā)送出的數(shù)據(jù)和對方收到的數(shù)據(jù)不一致
            System.out.println("input sign: " + inputSign + ", calculated sign: " + sign);
            return null;
        }

        // 解密請求方在發(fā)送請求時,加密data字段所用的對稱加密密鑰
        String key = receivedMap.get("key");
        String salt = receivedMap.get("salt");
        key = decryptRSA(selfPrivateKey, key);
        salt = decryptRSA(selfPrivateKey, salt);

        // 解密data數(shù)據(jù)
        String data = decryptAES(key, salt, receivedMap.get("data"));
        System.out.println("接收到的data內(nèi)容:" + data);
        return data;
    }

    /**
     *  加密數(shù)據(jù)組織示例
     */
    public static String encryptSendData(PublicKey externalPublicKey, PrivateKey selfPrivateKey, JSONObject sendData) throws NoSuchAlgorithmException, InvalidKeySpecException,
            InvalidKeyException, NoSuchPaddingException, UnsupportedEncodingException, BadPaddingException,
            IllegalBlockSizeException, InvalidAlgorithmParameterException {

        // 隨機生成對稱加密的密鑰和IV (IV就是加鹽的概念,加密的偏移量)
        String aesKeyWithBase64 = genRandomAesSecretKey();
        String aesIVWithBase64 = genRandomIV();

        // 用接收方提供的公鑰加密key和salt,接收方會用對應(yīng)的私鑰解密
        String key = encryptRSA(externalPublicKey, aesKeyWithBase64);
        String salt = encryptRSA(externalPublicKey, aesIVWithBase64);

        // 組織業(yè)務(wù)數(shù)據(jù)信息,并用上面生成的對稱加密的密鑰和IV進行加密
        System.out.println("發(fā)送的data內(nèi)容:" + sendData.toJSONString());
        String cipherData = encryptAES(aesKeyWithBase64, aesIVWithBase64, sendData.toJSONString());

        // 組織請求的key、value對
        Map<String, String> requestMap = new TreeMap<String, String>();
        requestMap.put("key", key);
        requestMap.put("salt", salt);
        requestMap.put("data", cipherData);
        requestMap.put("source", "由接收方提供"); // 添加來源標識

        // 計算sign,并用請求方的私鑰加簽,接收方會用請求方發(fā)放的公鑰驗簽
        String sign = sha256(requestMap);
        requestMap.put("sign", encryptRSA(selfPrivateKey, sign));

        // 注意:請務(wù)必以form urlencoded方式,否則base64轉(zhuǎn)碼后的個別字符可能會被轉(zhuǎn)成空格,對方接收后將無法正常處理
        JSONObject json = new JSONObject();
        json.putAll(requestMap);
        return json.toString();
    }

    /**
     *  Description: 獲取隨機的對稱加密的密鑰
     */
    private static String genRandomAesSecretKey() throws NoSuchAlgorithmException, UnsupportedEncodingException,
            IllegalBlockSizeException, BadPaddingException, InvalidKeyException, NoSuchPaddingException {
        KeyGenerator keyGen = KeyGenerator.getInstance("AES");
        keyGen.init(128);
        SecretKey secretKey = keyGen.generateKey();
        String keyWithBase64 = Base64.encodeBase64(secretKey.getEncoded()).toString();

        return keyWithBase64;

    }

    private static String genRandomIV() {
        SecureRandom r = new SecureRandom();
        byte[] iv = new byte[16];
        r.nextBytes(iv);
        String ivParam = Base64.encodeBase64(iv)+"";
        return ivParam;
    }

    /**
     * 對稱加密數(shù)據(jù)
     */
    private static String encryptAES(String keyWithBase64, String ivWithBase64, String plainText)
            throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException,
            BadPaddingException, UnsupportedEncodingException, InvalidAlgorithmParameterException {
        byte[] keyWithBase64Arry = keyWithBase64.getBytes();
        byte[] ivWithBase64Arry = ivWithBase64.getBytes();
        SecretKeySpec key = new SecretKeySpec(Base64.decodeBase64(keyWithBase64Arry), "AES");
        IvParameterSpec iv = new IvParameterSpec(Base64.decodeBase64(ivWithBase64Arry));

        Cipher cipher = Cipher.getInstance(AES_ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, key, iv);

        return Base64.encodeBase64(cipher.doFinal(plainText.getBytes(UTF_8))).toString();
    }

    /**
     * 對稱解密數(shù)據(jù)
     */
    private static String decryptAES(String keyWithBase64, String ivWithBase64, String cipherText)
            throws NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException,
            BadPaddingException, UnsupportedEncodingException, InvalidAlgorithmParameterException {
        byte[] keyWithBase64Arry = keyWithBase64.getBytes();
        byte[] ivWithBase64Arry = ivWithBase64.getBytes();
        byte[] cipherTextArry = cipherText.getBytes();
        SecretKeySpec key = new SecretKeySpec(Base64.decodeBase64(keyWithBase64Arry), "AES");
        IvParameterSpec iv = new IvParameterSpec(Base64.decodeBase64(ivWithBase64Arry));

        Cipher cipher = Cipher.getInstance(AES_ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, key, iv);
        return new String(cipher.doFinal(Base64.decodeBase64(cipherTextArry)), UTF_8);
    }

    /**
     * 非對稱加密,根據(jù)公鑰和原始內(nèi)容產(chǎn)生加密內(nèi)容
     */
    private static String encryptRSA(Key key, String plainText)
            throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException,
            BadPaddingException, IllegalBlockSizeException, InvalidAlgorithmParameterException {
        Cipher cipher = Cipher.getInstance(RSA_ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, key);
        return Base64.encodeBase64(cipher.doFinal(plainText.getBytes(UTF_8))).toString();
    }

    /**
     * 根據(jù)私鑰和加密內(nèi)容產(chǎn)生原始內(nèi)容
     */
    private static String decryptRSA(Key key, String content) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, DecoderException, BadPaddingException, IllegalBlockSizeException, UnsupportedEncodingException, InvalidAlgorithmParameterException {
        Cipher cipher = Cipher.getInstance(RSA_ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, key);
        byte[] contentArry = content.getBytes();
        return new String(cipher.doFinal(Base64.decodeBase64(contentArry)), UTF_8);
    }

    /**
     * 計算sha256值
     *
     * @param paramMap
     * @return 簽名后的所有數(shù)據(jù),原始數(shù)據(jù)+簽名
     */
    private static String sha256(Map<String, String> paramMap) {
        Map<String, String> params = new TreeMap<String, String>(paramMap);

        StringBuilder concatStr = new StringBuilder();
        for (Map.Entry<String, String> entry : params.entrySet()) {
            if ("sign".equals(entry.getKey())) {
                continue;
            }
            concatStr.append(entry.getKey() + "=" + entry.getValue() + "&");
        }

        return DigestUtils.md5Hex(concatStr.toString());
    }

    /**
     * 創(chuàng)建RSA的公鑰和私鑰示例 將生成的公鑰和私鑰用Base64編碼后打印出來
     * @throws NoSuchAlgorithmException
     */
    public static void createKeyPairs() throws NoSuchAlgorithmException {
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
        keyPairGenerator.initialize(2048);
        KeyPair keyPair = keyPairGenerator.generateKeyPair();
        RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
        RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
        System.out.println("公鑰"+Base64.encodeBase64(publicKey.getEncoded()));
        System.out.println("私鑰"+Base64.encodeBase64(privateKey.getEncoded()));
    }

    /**
     *  Description:默認的RSA解密方法 一般用來解密 參數(shù) 小數(shù)據(jù)
     */
    public static String decryptRSADefault(String privateKeyStr,String data) {
        try{
            KeyFactory keyFactory = KeyFactory.getInstance(RSA_ALGORITHM_NOPADDING);
            byte[] privateKeyArray = privateKeyStr.getBytes();
            byte[] dataArray = data.getBytes();
            PKCS8EncodedKeySpec pkcs8EncodedKeySpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(privateKeyArray));
            PrivateKey privateKey = keyFactory.generatePrivate(pkcs8EncodedKeySpec);

            Cipher cipher = Cipher.getInstance(RSA_ALGORITHM_NOPADDING);
            cipher.init(Cipher.DECRYPT_MODE, privateKey);
            return new String(cipher.doFinal(Base64.decodeBase64(dataArray)), UTF_8);
        }catch (Exception e){
            e.printStackTrace();
        }
        return "";
    }

    /**
     * 自測
     * @param args
     */
    public static void main(String[] args) {
        String password = "VzQuPo/OtqlYtDzx4nM9cctzbHir92FcSms9yF5aGVtGXVYOOnsjQR16QrgpLf5/V6Ma2Iuze8ioZmNJuqdcJw==";
        String result = RSAUtils.decryptRSADefault(PRI_KEY, password);
        System.out.println("password="+result);
    }
}

?原有文章基礎(chǔ)上補充加密方法?文章來源地址http://www.zghlxwxcb.cn/news/detail-742030.html

/**
     *  Description:默認的RSA加密方法 一般用來解密 參數(shù) 小數(shù)據(jù)【不好用】
     */
    public static String encryptRSADefault(String publicKeyStr,String data) {
        try{
            KeyFactory keyFactory = KeyFactory.getInstance(RSA_ALGORITHM_NOPADDING);
            byte[] publicKeyArray = publicKeyStr.getBytes();
            byte[] dataArray = data.getBytes();
            X509EncodedKeySpec rsaPublicKeySpec = new X509EncodedKeySpec(Base64.decodeBase64(publicKeyArray));
            PublicKey publicKey = keyFactory.generatePublic(rsaPublicKeySpec);

            Cipher cipher = Cipher.getInstance(RSA_ALGORITHM_NOPADDING);
            cipher.init(Cipher.ENCRYPT_MODE, publicKey);
            byte[] encryptedData = cipher.doFinal(data.getBytes(UTF_8));
            return Base64.encodeBase64String(encryptedData);
        }catch (Exception e){
            e.printStackTrace();
        }
        return "";
    }

    /**
     * RSA加密
     *
     * @param publicKeyStr 公鑰字符串
     * @param data         要加密的數(shù)據(jù)
     * @return 加密后的Base64編碼字符串
     * @throws NoSuchAlgorithmException
     * @throws InvalidKeySpecException
     * @throws Exception
     */
    public static String encryptRSA(String publicKeyStr, String data)
            throws NoSuchAlgorithmException, InvalidKeySpecException, Exception {
        KeyFactory keyFactory = KeyFactory.getInstance(RSA_ALGORITHM_NOPADDING);
        byte[] publicKeyArray = publicKeyStr.getBytes(UTF_8);
        X509EncodedKeySpec x509EncodedKeySpec = new X509EncodedKeySpec(Base64.decodeBase64(publicKeyArray));
        PublicKey publicKey = keyFactory.generatePublic(x509EncodedKeySpec);

        Cipher cipher = Cipher.getInstance(RSA_ALGORITHM_NOPADDING);
        cipher.init(Cipher.ENCRYPT_MODE, publicKey);
        byte[] encryptedData = cipher.doFinal(data.getBytes(UTF_8));
        return Base64.encodeBase64String(encryptedData);
    }

到了這里,關(guān)于若依ruoyi前端vue使用jsencrypt.js加密后端java進行RSA解密(前后端交互RSA加解密)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 若依ruoyi-vue前端組件的使用指南

    若依ruoyi-vue提供了豐富的前端組件,可以幫助開發(fā)人員快速搭建現(xiàn)代化的Web應(yīng)用。本文將介紹如何使用Ruoyi Vue的前端組件,包括自定義組件、組件注冊和組件通信。 1. 自定義組件 自定義組件允許開發(fā)人員根據(jù)項目需求創(chuàng)建新的組件,以實現(xiàn)特定的功能或樣式。在Ruoyi Vue中,

    2024年04月25日
    瀏覽(33)
  • 若依RuoYi-Cloud框架前端vue安裝時報 core-js/modules/es.error.cause.js錯誤怎么解決?

    如下所示,新手安裝若依RuoYi-Cloud框架前端vue時會報如下錯誤: ERROR Failed to compile with 7 errors This dependency was not found: core-js/modules/es.error.cause.js in ./node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js, ./src/directive/permission/hasRole.js and 5 others To install it, you can run: npm install --save core

    2024年02月12日
    瀏覽(36)
  • ruoyi 若依 前端vue npm install 運行vue前端

    ruoyi 若依 前端vue npm install 運行vue前端

    1. 安裝jdk ???????https://blog.csdn.net/torpidcat/article/details/90549551 2. nginx https://blog.csdn.net/torpidcat/article/details/97934302 3. mysql https://blog.csdn.net/torpidcat/article/details/110265490 4. redis https://blog.csdn.net/torpidcat/article/details/123021796 =================================== 首次導入,需要先執(zhí)行 np

    2024年01月25日
    瀏覽(17)
  • 若依基于jsencrypt實現(xiàn)前后端登錄密碼加密

    若依基于jsencrypt實現(xiàn)前后端登錄密碼加密

    若依雖然有加密解密功能,然后只有前端有,在用戶點擊保存密碼的時候,會將密碼保存到本地,但是為了防止密碼泄露,所以在保存的時候,進行加密,在回顯密碼的時候進行解密顯示,用戶在登錄的時候密碼照樣會明文傳輸,我們可以使用,為了解決這個問題,我們可以

    2024年01月17日
    瀏覽(25)
  • Vue中的加密方式(js-base64、crypto-js、jsencrypt、bcryptjs)

    Vue中的加密方式(js-base64、crypto-js、jsencrypt、bcryptjs)

    1.安裝js-base64庫? 2.?在Vue組件中引入js-base64庫 3.使用js-base64庫進行加密 4.Vue中其他加密方式? 1.crypto-js 2.jsencrypt 3.bcryptjs 使用 Base64.encode() 方法對字符串進行加密,并使用 Base64.decode() 方法對加密后的字符串進行解密。您可以根據(jù)需要使用這些方法來加密和解密字符串。請注意

    2024年02月08日
    瀏覽(23)
  • 【JMeter】前端使用JMeter測試JSEncrypt加密登錄

    【JMeter】前端使用JMeter測試JSEncrypt加密登錄

    簡介:前端開發(fā)時會接觸到用戶登錄,登錄時為了數(shù)據(jù)的安全會使用到j(luò)sencrypt加密工具,同時我們需要使用jmeter來進行壓測,幫助我們了解Web應(yīng)用程序在高負載情況下的性能表現(xiàn),從而為優(yōu)化應(yīng)用程序性能提供參考 1.JMeter: 5.5 2.JDK: 8.0 3.插件: 安裝插件:jmeter-plugins-manager-1.

    2024年02月11日
    瀏覽(20)
  • 前端開發(fā)之jsencrypt加密解密的使用方法和使用示例

    前端開發(fā)之jsencrypt加密解密的使用方法和使用示例

    jsencrypt官方文檔 公鑰私鑰生成網(wǎng)址 jsencrypt就是一個基于rsa加解密的js庫,常用在向后臺發(fā)送數(shù)據(jù)的時候 本文是通過node.js的window.btoa和window.atob配合jsencrypt進行加密

    2024年02月16日
    瀏覽(35)
  • 若依(ruoyi)前端Vue3 Element Plus Vite版樣式修改

    若依(ruoyi)前端Vue3 Element Plus Vite版樣式修改

    位置: src/layout/components/Navbar.vue 類名: .navbar 這里主要是修改導航欄的背景色,在修改顏色值時,你可以使用其他十六進制顏色代碼,也可以嘗試使用RGB、RGBA或HSL等其他表示顏色的方式。這取決于你的設(shè)計需求和個人喜好。 這段主要是修改右側(cè)的圖標,隱藏、全屏等方法:

    2024年02月03日
    瀏覽(25)
  • java和js實現(xiàn)前端加密后端解密,后端加密前端解密(Base64)

    目錄 1.前端加密后端解密 2.后端加密前端解密 在前端和后端數(shù)據(jù)傳輸時,常常涉及到隱私數(shù)據(jù)的傳輸(例如用戶名和密碼),這時,我們就需要對隱私數(shù)據(jù)進行加密解密 1.前端加密后端解密 ????????1.1 前端jquery實現(xiàn) ????????1.2后端 2.后端加密前端解密 ? ? ? ? 2.1后端加密

    2024年02月16日
    瀏覽(30)
  • 若依Ruoyi-Vue生成代碼使用

    若依Ruoyi-Vue生成代碼使用

    目錄 一、效果一覽: 二、詳細步驟: ①登錄若依----點擊系統(tǒng)工具--點擊代碼生成模塊 ②使用Navicat在若依數(shù)據(jù)庫里面新建一張表單,我這示例創(chuàng)建了my_students表單 并為表設(shè)計字段添加數(shù)據(jù) ?③在代碼生成欄導入剛才創(chuàng)建的my_students表 并編輯這張表 ?④完成這些操作之后,點

    2024年02月05日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包