AES加密解密(java、web、app)

  • AES加密解密(java、web、app)
    • java端
    • Web端
    • ios端

AES加密解密(java、web、app)

java端

package com.unicomSmartCity.common.core.utils;
import com.unicomSmartCity.common.core.exception.CustomException;
import org.apache.commons.codec.binary.Hex;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

/**

  • @Author: liqi

  • @Description: aes加密解密

  • @Date: 2020/12/14 10:51

  • @Version: 1.0
    */
    public class AesEncryptUtils {
    private final static String key = “abcdef0123456789”;

    /**

    • 加密

    • @param input

    • @return
      */
      public static String encrypt(String input) {
      byte[] crypted = null;
      try {

       SecretKeySpec skey = new SecretKeySpec(key.getBytes(), "AES");Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE, skey);crypted = cipher.doFinal(input.getBytes());
      

      } catch (Exception e) {
      throw new CustomException(e.getMessage());
      }
      return new String(Hex.encodeHex(crypted));
      }

    /**

    • aes解码
    • @param input
    • @return
      */
      public static String decrypt(String input) {
      byte[] output = null;
      try {
      SecretKeySpec skey = new SecretKeySpec(key.getBytes(), “AES”);
      Cipher cipher = Cipher.getInstance(“AES/ECB/PKCS5Padding”);
      cipher.init(Cipher.DECRYPT_MODE, skey);
      output = cipher.doFinal(Hex.decodeHex(input.toCharArray()));
      } catch (Exception e) {
      System.out.println(e.toString());
      throw new CustomException(e.getMessage());
      }
      return new String(output);
      }

}

Web端

封装
封装全局解密加密工具类文件
下载CryptoJS并且从依赖包引入
import CryptoJS from ‘crypto-js/crypto-js’ //引用AES源码js
定义key值要与后端相同不同的话解密算法会出问题
var key = CryptoJS.enc.Utf8.parse(“abcdef0123456789”);
加密函数
export function Encrypt(word) {
let srcs = CryptoJS.enc.Utf8.parse(word);
let encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
return encrypted.ciphertext.toString().toUpperCase();
}
解密函数
export function Decrypt(word) {
let encryptedHexStr = CryptoJS.enc.Hex.parse(word);
let srcs = CryptoJS.enc.Base64.stringify(encryptedHexStr);
let decrypt = CryptoJS.AES.decrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 });
let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
return decryptedStr.toString();
}
解密
在解密页面import 引入解密函数
import {Decrypt} from “@/utils/aes/security.js”;

把后端出餐加密字符解密之后利用JSON.parse转成json对象

加密
在参数发送页面引入加密函数import {Encrypt} from “@/utils/aes/security.js”;

Query形式传参需要以Encrypt转换之后 以键值对的对象形式发送

Body形式只需将参数直接转换后发送即可

ios端

NSData+AES128.m
// 加密

  • (NSData *)aes128_encrypt:(NSString *)key {
    char keyPtr[kCCKeySizeAES128 + 1];
    memset(keyPtr, 0, sizeof(keyPtr));
    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
    NSUInteger dataLength = [self length];
    size_t bufferSize = dataLength + kCCBlockSizeAES128;
    void *buffer = malloc(bufferSize);
    size_t numBytesEncrypted = 0;
    CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128, kCCOptionPKCS7Padding | kCCOptionECBMode, keyPtr, kCCBlockSizeAES128, NULL, [self bytes], dataLength, buffer, bufferSize, &numBytesEncrypted);
    if (cryptStatus == kCCSuccess) {
    return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
    }
    free(buffer);
    return nil;
    }
    // 解密
  • (NSData *)aes128_decrypt:(NSString *)key {
    char keyPtr[kCCKeySizeAES128+1];
    bzero(keyPtr, sizeof(keyPtr));
    [key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
    NSUInteger dataLength = [self length];
    size_t bufferSize = dataLength + kCCBlockSizeAES128;
    void *buffer = malloc(bufferSize);
    size_t numBytesDecrypted = 0;
    CCCryptorStatus cryptStatus = CCCrypt(kCCDecrypt, kCCAlgorithmAES128,
    kCCOptionPKCS7Padding | kCCOptionECBMode, keyPtr, kCCBlockSizeAES128,
    NULL, [self bytes], dataLength, buffer, bufferSize, &numBytesDecrypted);
    if (cryptStatus == kCCSuccess) {
    return [NSData dataWithBytesNoCopy:buffer length:numBytesDecrypted];
    }
    free(buffer);
    return nil;
    }
    NSString+AES128.h
    // 加密
  • (NSString *)aes128_encrypt:(NSString *)key{
    //const char *cstr = [self cStringUsingEncoding:NSUTF8StringEncoding];
    //NSData data = [NSData dataWithBytes:cstr length:self.length];
    NSData
    data = [self dataUsingEncoding:NSUTF8StringEncoding];
    //对数据进行加密
    NSData *result = [data aes128_encrypt:key];
    //转换为2进制字符串
    if (result && result.length > 0) {
    Byte datas = (Byte)[result bytes];
    NSMutableString *output = [NSMutableString stringWithCapacity:result.length * 2];
    for(int i = 0; i < result.length; i++){
    [output appendFormat:@"%02x", datas[i]];
    }
    return output;
    }
    return nil;
    }
    // 解密
  • (NSString )aes128_decrypt:(NSString )key {
    //转换为2进制Data
    NSMutableData data = [NSMutableData dataWithCapacity:self.length / 2];
    unsigned char whole_byte;
    char byte_chars[3] = {’\0’,’\0’,’\0’};
    int i;
    for (i = 0; i < [self length] / 2; i++) {
    byte_chars[0] = [self characterAtIndex:i
    2];
    byte_chars[1] = [self characterAtIndex:i
    2+1];
    whole_byte = strtol(byte_chars, NULL, 16);
    [data appendBytes:&whole_byte length:1];
    }
    //对数据进行解密
    NSData
    result = [data aes128_decrypt:key];
    if (result && result.length > 0) {
    return [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding];
    }
    return nil;
    }
    加密时引入#import “NSString+AES128.h”
    调用加密方法或解密方法,参数是密钥
    NSString *enStr = [paramStr aes128_encrypt:XACAceEncrypt_KEY];
    NSString *deStr = [enStr aes128_decrypt:XACAceEncrypt_KEY];

AES加密解密(java、web、app)相关推荐

  1. java php aes加密解密_php aes 加密解密可与java对接

    php aes 加密解密可与java对接 博主:liu1693 发表时间:2017-02-23 16:52:27 浏览量:100 class Encrypt{ //加密方法 public static ...

  2. AES加密解密算法Java实现

    AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DE ...

  3. ios java aes_PHP7 AES加密解密函数_兼容ios/andriod/java对等加解密

    **PHP7.0 7.1 7.2 7.3 AES对等加解密类 函数文件_兼容ios/andriod/java等** 由于新项目规划要求使用PHP7.2开发环境,但在部分新系统中仍需使用AES加解密方式 ...

  4. aes加密算法python语言实现_C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现[转载]...

    原文:http://outofmemory.cn/code-snippet/35524/AES-with-javascript-java-csharp-python-or-php c#里面的AES加密 ...

  5. JAVA与PHP之间进行aes加密解密

    aes加密解密过程 用户数据应经过加密再传输,此文档为aes128加密(cbc模式)的说明 摘要算法为SHA-512 加密: 生成16位iv向量,使用该iv以及密钥加密原文 将加密后的真实密文与iv拼 ...

  6. Java AES 加密解密工具类

    maven 引入一个依赖 <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec --> <depen ...

  7. java nodejs aes_Java与Node.js利用AES加密解密出相同结果的方法示例

    前言 工作中遇到nodejs端通过aes加密,安卓客户端Java解密,同样nodejs也需要解密安卓客户端加密过来的内容,发现两个加密结果不一样,查询资料发现java端需要对密钥再MD5加密一遍,以下 ...

  8. AES加密解密(CBC模式)

    高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES, ...

  9. android、ios、php之间AES加密解密

    使用原因: 因为在项目中,需要在与客户端(IOS,Android)交互的时候,保存一些私有信息,不被别人看到,所以,使用了比较流行的可以反向加解密的AES. PHP 源码 <?php$aes = ...

最新文章

  1. 简单的HBase实践
  2. 【白话机器学习】算法理论+实战之关联规则
  3. h5课件制作_Articulate storyline交互H5视频课件制作技巧
  4. boost::diagnostic_information_what的用法程序
  5. (一)导学(Javascript设计模式系统讲解与应用)
  6. 可用性目标概念化(摩西十戒)
  7. 《中国人工智能学会通讯》——4.32 数据包丢失
  8. 3从控制台输入三个数,并输出最大值
  9. 如何在android上编程,如何在Android中以编程方式与USSD对话框进行交互
  10. oracle中on和where的区别,Oracle里面的外连中where和on之后and有啥区别
  11. Android定时发送短信功能实现
  12. w ndows7旗舰版怎么重装系统,windows7旗舰版64位重装系统图文教程
  13. 【饥荒脚本】饥荒控制台代码自动输入
  14. LabVIEW图表之双坐标轴
  15. 人民网:“2021数字基建论坛”在京召开,共议行业高质量发展
  16. linux php preg扩展,PHP_linux shell 正则表达式(BREs,EREs,PREs)差异比较,在计算机科学中,是指一个用 - phpStudy...
  17. 阿里珍贵技术资料免费下载
  18. 快速查询的秘籍 —— B+ 树索引
  19. 马云卸职CEO的启示
  20. 国家认证--软件评测师考试要求

热门文章

  1. 金蝶账套点开显示服务器未启动,金蝶kis专业版10个易遇见的操作问题
  2. 刀片服务器与机架服务器比较(图)
  3. ros下使用webots
  4. 不同规模下呼叫中心的系统搭建解决方案
  5. Android开发---RxJava+Retrofit封装
  6. 三星p601刷android9,三星P601一键救砖教程,轻松刷回官方系统
  7. 企业管理员MCITP
  8. 兰色幻想vba-作业1
  9. 汇编学习教程:定义不同的段
  10. lib库实现UI定制化