zoukankan      html  css  js  c++  java
  • CryptoJS文件加密与解密

    import React, { Component } from 'react';
    import CryptoJS from 'crypto-js/crypto-js'
    import { Button } from 'antd';

    class Encryption extends Component {
    constructor(){
    super();
    this.state={
    value2:'qqqqqqqqqqqq',
    encryptioned:'',
    Decrypted:''
    }
    }

    componentDidMount(){

    }

    ///对文件进行加密
    encryption = (e,dataw)=>{
    debugger
    let data = this.state.value2;
    let srcs = CryptoJS.enc.Utf8.parse(data);
    let key = CryptoJS.enc.Utf8.parse('1111111111111111');//Latin1 w8m31+Yy/Nw6thPsMpO5fg==
    let encrypted = CryptoJS.AES.encrypt(srcs, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});
    this.setState({encryptioned: encrypted.toString()});
    };
    ///对文件进行解密
    Decrypt=(e,data)=>{
    let word = this.state.encryptioned;///o7H8uIM2O5qv65l2
    let key = CryptoJS.enc.Utf8.parse('1111111111111111');//Latin1 w8m31+Yy/Nw6thPsMpO5fg==
    let decrypt = CryptoJS.AES.decrypt(word, key, {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});
    this.setState({Decrypted:CryptoJS.enc.Utf8.stringify(decrypt).toString()});
    };

    render() {
    return(
    <div>
    <p><input value={this.state.value2} type="text"/></p>
    <Button type="primary" onClick={this.encryption.bind(this)}>请输入要加密的内容</Button>
    <br/>
    <h2>
    加密之后的内容:<span>{this.state.encryptioned}</span>
    </h2>
    <Button type="primary" onClick={this.Decrypt.bind(this)}>对加密文件进行解密</Button>
    <br/>
    <h2>
    解密之后的内容:<span>{this.state.Decrypted}</span>
    </h2>
    </div>
    )
    }
    }
    export default Encryption;
    这里的密钥是由十六位十六进制数作为密钥组成
     //十六位十六进制数作为密钥偏移量
    const CryptoJS = require('crypto-js'); //引用AES源码js const key = CryptoJS.enc.Utf8.parse("1234123412ABCDEF"); //十六位十六进制数作为密钥 const iv = CryptoJS.enc.Utf8.parse('ABCDEF1234123412'); //十六位十六进制数作为密钥偏移量 //解密方法 function Decrypt(word) { let encryptedHexStr = CryptoJS.enc.Hex.parse(word); let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr); let decrypt = CryptoJS.AES.decrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8); return decryptedStr.toString(); } //加密方法 function Encrypt(word) { let srcs = CryptoJS.enc.Utf8.parse(word); let encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); return encrypted.ciphertext.toString().toUpperCase(); } export default { Decrypt , Encrypt }
     
     
  • 相关阅读:
    sql server 错误9003:LSN无效(日志扫描号无效),对数据库的修复.
    用C#调用C++DLL时的字符串指针参数传递问题
    sql server 2005中的Service broker小示例(未完善)
    水晶报表钻取数据,在明细层导的时候,报表会从新加载,并显示主报表
    [转]gridview获取当前行索引的方法
    验证视图状态 MAC 失败的解决办法
    SQL SERVER 2005中对存储过程进行签名(转)
    MSChart图表控件的一些使用
    Repository模式
    职能式管理和流程式管理
  • 原文地址:https://www.cnblogs.com/boonook/p/9721470.html
Copyright © 2011-2022 走看看