导航:首页 > 文档加密 > 小程序aesjs加密蓝牙开锁

小程序aesjs加密蓝牙开锁

发布时间:2022-04-24 15:51:10

❶ 如何使用CryptoJS的AES方法进行加密和解密

首先准备一份明文和秘钥:
var plaintText = 'aaaaaaaaaaaaaaaa'; // 明文
var keyStr = 'bbbbbbbbbbbbbbbb'; // 一般key为一个字符串

参看官网文档,AES方法是支持AES-128、AES-192和AES-256的,加密过程中使用哪种加密方式取决于传入key的类型,否则就会按照AES-256的方式加密。
CryptoJS supports AES-128, AES-192, and AES-256. It will pick the variant by the size of the key you pass in. If you use a passphrase, then it will generate a 256-bit key.
由于java就是按照128bit给的,但是由于是一个字符串,需要先在前端将其转为128bit的才行。
最开始以为使用CryptoJS.enc.Hex.parse就可以正确地将其转为128bit的key。但是不然...
经过多次尝试,需要使用CryptoJS.enc.Utf8.parse方法才可以将key转为128bit的。好吧,既然说了是多次尝试,那么就不知道原因了,后期再对其进行更深入的研究。
// 字符串类型的key用之前需要用uft8先parse一下才能用
var key = CryptoJS.enc.Utf8.parse(keyStr);

由于后端使用的是PKCS5Padding,但是在使用CryptoJS的时候发现根本没有这个偏移,查询后发现PKCS5Padding和PKCS7Padding是一样的东东,使用时默认就是按照PKCS7Padding进行偏移的。
// 加密
var encryptedData = CryptoJS.AES.encrypt(plaintText, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});

由于CryptoJS生成的密文是一个对象,如果直接将其转为字符串是一个Base64编码过的,在encryptedData.ciphertext上的属性转为字符串才是后端需要的格式。
var encryptedBase64Str = encryptedData.toString();
// 输出:'+ot8JuxWVdLgY='
console.log(encryptedBase64Str);

// 需要读取encryptedData上的ciphertext.toString()才能拿到跟Java一样的密文
var encryptedStr = encryptedData.ciphertext.toString();
// 输出:''
console.log(encryptedStr);

由于加密后的密文为128位的字符串,那么解密时,需要将其转为Base64编码的格式。
那么就需要先使用方法CryptoJS.enc.Hex.parse转为十六进制,再使用CryptoJS.enc.Base64.stringify将其变为Base64编码的字符串,此时才可以传入CryptoJS.AES.decrypt方法中对其进行解密。
// 拿到字符串类型的密文需要先将其用Hex方法parse一下
var encryptedHexStr = CryptoJS.enc.Hex.parse(encryptedStr);

// 将密文转为Base64的字符串
// 只有Base64类型的字符串密文才能对其进行解密
var encryptedBase64Str = CryptoJS.enc.Base64.stringify(encryptedHexStr);

使用转为Base64编码后的字符串即可传入CryptoJS.AES.decrypt方法中进行解密操作。
// 解密
var decryptedData = CryptoJS.AES.decrypt(encryptedBase64Str, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});

经过CryptoJS解密后,依然是一个对象,将其变成明文就需要按照Utf8格式转为字符串。
// 解密后,需要按照Utf8的方式将明文转位字符串
var decryptedStr = decryptedData.toString(CryptoJS.enc.Utf8);
console.log(decryptedStr); // 'aaaaaaaaaaaaaaaa'

❷ 有没有单纯实现aes加密的js算法

给你一个java aes加密解密的类吧.

import javax.crypto.*;
import javax.crypto.spec.*;

public class AES {
public static String Decrypt(String sSrc, String sKey){
try {
//判断Key是否正确
if (sKey == null) {
return null;
}
//判断Key是否为16位
if (sKey.length() != 16) {
throw new Exception("解密key长度不足。");
}
byte[] raw = sKey.getBytes("ASCII");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] encrypted1 = hex2byte(sSrc);
try {
byte[] original = cipher.doFinal(encrypted1);
String originalString = new String(original);
return originalString;
} catch (Exception e) {
throw e;
}
} catch (Exception ex) {
throw ex;
}
}
//判断Key是否正确
public static String Encrypt(String sSrc, String sKey){
if (sKey == null) {
return null;
}
//判断Key是否为16位
if (sKey.length() != 16) {
throw new Exception("加密key长度不足。");
}
byte[] raw = sKey.getBytes("ASCII");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(sSrc.getBytes());

return byte2hex(encrypted).toLowerCase();
}
public static byte[] hex2byte(String strhex) {
if (strhex == null) {
return null;
}
int l = strhex.length();
if (l % 2 == 1) {
return null;
}
byte[] b = new byte[l / 2];
for (int i = 0; i != l / 2; i++) {
b[i] = (byte) Integer.parseInt(strhex.substring(i * 2, i * 2 + 2), 16);
}
return b;
}
public static String byte2hex(byte[] b) {
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1) {
hs = hs + "0" + stmp;
} else {
hs = hs + stmp;
}
}
return hs.toUpperCase();
}
}

❸ 如何解密加密的AES-256字符串从CryptoJS使用Java

java和C#只是语言,AES这些是算法,所以和语言没太大关系,JAVA加密的“1”和c#加密的“1”结果是一样的,解密出来也是一样的。

❹ 前端使用CryptoJS AES加密 ,后端php解密问题

PHP7.1 已经不能用mcrypt了,所以我用的是openssl_encrypt和openssl_decrypt。

<?php
$data="ThisisanAEScryptdemo.";
$privateKey="";//KEY16字节用aes-128-cbc,32字节用aes-256-cbc
$iv="4490d2ded4f2d4ad";//AES的IV是16个字节

//加密
//$encrypted=openssl_encrypt($data,'aes-128-cbc',$privateKey,0,$iv);
$encrypted=openssl_encrypt($data,'aes-256-cbc',$privateKey,0,$iv);
echo$encrypted,PHP_EOL;

//解密
$encryptedData=$encrypted;
//$decrypted=openssl_decrypt($encryptedData,'aes-128-cbc',$privateKey,0,$iv);
$decrypted=openssl_decrypt($encryptedData,'aes-256-cbc',$privateKey,0,$iv);
echo($decrypted);

输出结果如下:

EPcMQRXA53/hRkPyILFI4fF/9sW2X53tLiDT26khNsA=
ThisisanAEScryptdemo.

❺ crypto-js aes怎么用

crypto-js aes使用前端加密php后端解密:
前端js:
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/aes.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/md5.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/components/pad-zeropadding.js"></script>
<script>
var key_hash = CryptoJS.MD5("Message");
var key = CryptoJS.enc.Utf8.parse(key_hash);
var iv = CryptoJS.enc.Utf8.parse('1234567812345678');
var encrypted = CryptoJS.AES.encrypt("Message", key, { iv: iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding});
document.write("encode:"+encrypted);
</script>
php代码:
<?php
$text = "Message";
$key = md5($text); //key的长度必须16,32位,这里直接MD5一个长度为32位的key
$iv='1234567812345678';
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $text, MCRYPT_MODE_CBC, $iv);
$decode = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, $crypttext, MCRYPT_MODE_CBC, $iv);
echo base64_encode($crypttext);
echo "<br/>";
echo $decode;
echo "<br/>";
?>

❻ 有关使用CryptoJS的AES方法进行加密和解密,后台获取前端生成的公钥进行AES加密。前端js如何使用私钥解密

如果你的填充模式不是PKCS5Padding肯定就解密不了了

CryptoJS.aes.encrypt(srcs, key, { iv: iv,mode:CryptoJS.mode.cbc.padding:CryptoJS.pad.NoPadding});

CryptoJS可以用的填充模式:

Pkcs7 (the default)
Iso97971
AnsiX923
Iso10126
ZeroPadding

❼ 微信小程序怎样加密

1.下载一份Js版的aesUtil.js源码。【注:文章末尾会贴出所有的相关类文件】
2.下载一份Js版的md
5.js源码。
3.在pulic.js中进行加解密操作代码如下,其中秘钥和秘钥偏移量要与后台的一致。var CryptoJS = require('aesUtil.js'); //引用...
4.在网络请求帮助类中进行参数的加密和返回数据的解密操作。var aes = require...

阅读全文

与小程序aesjs加密蓝牙开锁相关的资料

热点内容
企业服务器为什么不能被拷贝 浏览:119
用c编程实现txt搜索 浏览:854
JAVA小数随机数 浏览:336
app加拿大pc怎么操控的 浏览:698
光影app苹果怎么下载不了 浏览:971
php会员注册代码 浏览:511
csgo如何用128tick服务器 浏览:571
百度网度怎么解压 浏览:946
windowsopencv源码 浏览:945
origin平滑算法 浏览:875
unity程序员简历 浏览:63
单片机ifelse 浏览:695
如何理解php面向对象 浏览:96
macword转pdf 浏览:848
python列表求交集 浏览:874
解压包如何转音频 浏览:447
机明自动编程软件源码 浏览:326
php端口号设置 浏览:541
phperegreplace 浏览:320
androidgridview翻页 浏览:537