前端如何加密数据--五种方式(base64加密、md5加密、sha1加密、字符串方法加密、AES加密)

1.base64加密(包括小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"一共64个字符的字符集,另加一个“=”,实际是65个字符)

字符串转换为base64:str64 = window.btoa(str)

base64转换为字符串:str=window.atob(str64)

<script>
    let str = 'helloworld';
    let str64 = window.btoa(str);
    console.log('base64码显示是:' + str64);
    let jm = window.atob(str64);
    console.log('字符串显示是:' + jm);
</script>

2.md5加密

<script src="https://cdn.bootcss.com/blueimp-md5/2.12.0/js/md5.min.js"></script>

<script>
    let str = 'helloworld';
    let newStr = md5(str);
    console.log("字符串:",str);
    console.log("加密后的字符串:",newStr);
</script>

3.sha1加密

<script src="https://cdn.bootcss.com/js-sha1/0.6.0/sha1.js"></script>
 <script>
    let str = 'helloworld_sha1';
    let newStr = sha1(str);
    console.log("字符串:",str);
    console.log("加密后的字符串:",newStr);
</script>

 

4.字符串的编码和解码(JS函数的escape()和unescape())--对于汉字,数字不适用

<script>
    let str = '喜羊羊美羊羊懒羊羊';
    let newStr = escape(str);
    console.log("字符串:", str);
    console.log("加密:", newStr);
    let newStr2 = unescape(newStr)
    console.log("解密:", newStr2);
</script>

 5.AES加密

脚手架安装:npm install crypto-js
<script src="https://cdn.bootcss.com/crypto-js/3.1.9-1/crypto-js.min.js"></script>
<script type="text/javascript">
    var aseKey = "12345678" //秘钥必须为:8/16/32位
    var message = "13785624612";
    //加密
    var encrypt = CryptoJS.AES.encrypt(message, CryptoJS.enc.Utf8.parse(aseKey), {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
        }).toString();
    console.log("加密为:",encrypt);
    //解密
    var decrypt = CryptoJS.AES.decrypt(encrypt, CryptoJS.enc.Utf8.parse(aseKey), {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
        }).toString(CryptoJS.enc.Utf8);
    console.log("解密为:",decrypt); //13785624612
</script>

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Java自带的MessageDigest或者Bouncy Castle库来实现加密和解密字符串。 下面是使用MessageDigest实现的加密和解密方法: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class EncryptUtils { public static String encrypt(String str) throws NoSuchAlgorithmException { MessageDigest md = MessageDigest.getInstance("SHA-256"); byte[] hash = md.digest(str.getBytes()); StringBuilder sb = new StringBuilder(); for (byte b : hash) { sb.append(String.format("%02x", b)); } return sb.toString(); } } ``` 调用示例: ```java String encryptedStr = EncryptUtils.encrypt("hello world"); System.out.println(encryptedStr); // 输出:b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9 ``` 在这个例子中,使用SHA-256算法对字符串进行加密,然后将加密后的结果转换为16进制字符串。 同样的,可以使用Bouncy Castle库来实现加密和解密方法。下面是示例代码: ```java import org.bouncycastle.jce.provider.BouncyCastleProvider; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.security.Security; import java.util.Base64; public class EncryptUtils { static { Security.addProvider(new BouncyCastleProvider()); } public static String encrypt(String str, String key, String iv) throws Exception { byte[] encrypted; SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); IvParameterSpec ivParameterSpec = new IvParameterSpec(iv.getBytes("UTF-8")); cipher.init(Cipher.ENCRYPT_MODE, skeySpec, ivParameterSpec); encrypted = cipher.doFinal(str.getBytes()); return Base64.getEncoder().encodeToString(encrypted); } public static String decrypt(String str, String key, String iv) throws Exception { byte[] original; SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES"); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding"); IvParameterSpec ivParameterSpec = new IvParameterSpec(iv.getBytes("UTF-8")); cipher.init(Cipher.DECRYPT_MODE, skeySpec, ivParameterSpec); byte[] encrypted = Base64.getDecoder().decode(str); original = cipher.doFinal(encrypted); return new String(original); } } ``` 这里使用AES算法对字符串进行加密和解密,需要提供密钥和向量。加密后的结果使用Base64编码转换为字符串

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值