AES对称加密

AES对称加密和解密算法以及Java的AES工具类 参考资料:百度百科【高级加密标准】 AES简介 1、密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。 2、它的功能是代替原先的DES数据加密解密算法。 3、高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002... 阅读详情

在数据库设计中,尤其在设计用户数据表时,通常都要考虑用户数据加密的情况,数据表中不明文显示用户信息,避免泄露用户隐私。
针对用户姓名、手机号、身份证号等敏感信息,可以采用AES对称加密。与Hash加密不同的是,AES对称加密是可逆的,通过解密数据库的信息,可以还原完整信息显示。
为了防止数据库泄露,窃取者还原用户信息,在使用AES加密时需要用到密钥文件。这里建议密钥文件单独保存。

代码文件结构:AesKeyManager(密钥管理器);AesHelper(密钥工具类)。

一、密钥文件

C#内置AES, 不需要添加第三方依赖。

 /// <summary>
 /// 密钥管理器
 /// </summary>
 public static class AesKeyManager
 {
     private static readonly string appPath = Path.Combine(
         Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
         "MyPro");

     private static readonly string KeyFile =
         Path.Combine(
             appPath,
             "aes.key");

     /// <summary>
     /// 获取AES Key
     /// 首次获取自动生成
     /// </summary>
     /// <returns></returns>
     public static byte[] GetKey()
     {
         if(!File.Exists(KeyFile))
         {
             CreateKey();
         }

         byte[] protectedKey = File.ReadAllBytes(KeyFile);

         return ProtectedData.Unprotect(protectedKey, null, DataProtectionScope.CurrentUser);
     }

     public static void CreateKey()
     {
         Directory.CreateDirectory(appPath);

         byte[] aseKey = RandomNumberGenerator.GetBytes(32);

         byte[] protectedKey = ProtectedData.Protect(aseKey, null,DataProtectionScope.CurrentUser);

         File.WriteAllBytes(KeyFile, protectedKey);
     }

     /// <summary>
     /// AES Key 文件路径
     /// </summary>
     public static string KeyFilePath => KeyFile;
 }

二、密钥工具类


/// <summary>
/// AES 工具类
/// </summary>
public static class AesHelper
{
    /// <summary>
    /// 加密
    /// </summary>
    /// <param name="plainText"></param>
    /// <returns></returns>
    public static string Encrypt(string plainText)
    {
        byte[] key = AesKeyManager.GetKey();

        using Aes aes = Aes.Create();

        aes.Key = key;
		
        aes.GenerateIV();// 每次随机生成 IV

        using MemoryStream ms = new();

        ms.Write(aes.IV);

        using CryptoStream cs = new(ms, aes.CreateEncryptor(), CryptoStreamMode.Write);

        using StreamWriter sw = new(cs);

        sw.Write(plainText);

        sw.Close();

        return Convert.ToBase64String(ms.ToArray());

    }

    /// <summary>
    /// 解密
    /// </summary>
    /// <param name="plainText"></param>
    /// <returns></returns>
    public static string Decrypt(string cipherText) 
    {
        byte[] key = AesKeyManager.GetKey();

        byte[] buffer = Convert.FromBase64String(cipherText);

        using Aes aes = Aes.Create();

        aes.Key = key;

        byte[] iv = new byte[16];// 提取前 16 字节为 IV

        Array.Copy(buffer, 0, iv, 0, 16);

        aes.IV = iv;

        using MemoryStream ms = new(buffer, 16, buffer.Length - 16);

        using CryptoStream cs = new(ms, aes.CreateDecryptor(), CryptoStreamMode.Read);

        using StreamReader sr = new(cs);

        return sr.ReadToEnd();
    }
}

附赠一个手机号脱敏显示,也作为自己的学习记录。

 /// <summary>
 ///  手机号脱敏显示
 /// </summary>
 /// <param name="phone"></param>
 /// <returns></returns>
 public static string MaskPhone(string phone)
 {
     if (string.IsNullOrWhiteSpace(phone))
         return phone;

     if (phone.Length != 11)
         return phone;

     return phone.Substring(0, 3) + "****" + phone.Substring(7);
 }

感谢看完全文,比心!

【JS逆向】【15.编码算法】对称加密(AES与DES),非对称加密(RSA)(详细笔记) 一、对称加密(AES与DES) 1. 前言 2. 安装 3. CBC加密 4. CBC解密 二、非对称加密(RSA) 1. 公钥和密钥 2. 生成公私钥 3. 公私钥加密和解密 加密 解密 阅读详情

相关推荐

lift off工艺为什么常用蒸发的方式镀膜?

电子束蒸发中,蒸发物质从源头直接升华并沿直线路径沉积到晶圆上,它可以避免金属在掩模侧壁的覆盖,只在表面进行沉积。在镀膜结束后,在进行光刻胶剥离时,去胶液无法与光刻胶接触反应,导致光刻胶剥离很困难。欢迎加入我的半导体制造知识星球社区,目前社区有1900人左右。我观察到晶圆厂中lift off工艺,镀膜都是用的电子束蒸发的方式,很少有用磁控溅射的方式,为什么?需要增加撕胶工序,将胶面上覆盖的膜层撕掉,使光刻胶露出,这样才容易剥离。上图为磁控溅射的膜层截面图,去胶液很难突破侧壁膜层,进行反应。

1684

AES对称加密原理及服务

高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图:下面简单介绍下各个部分的作用与意义:明文P没有经过加密的数据。密钥K用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。

Codeoooo 博客 1万+

如何利用DeepSeek自动生成PLC程序?

在工业自动化领域,PLC是核心控制设备,其编程效率和质量直接影响生产线的运行效果。 然而,传统PLC编程依赖工程师手动编写代码,不仅耗时耗力,还容易出错。通过自动生成PLC程序,DeepSeek不仅大幅提升了编程效率,还优化了代码质量。 那么DeepSeek到底能否自动生成PLC程序呢? 有位电气工程师就尝试让DeepSeek设计一套五层电梯控制系统的PLC程序,下面就让我们看看吧。 技术原理:DeepSeek如何实现自动编程DeepSeek利用自然语言处理技术,将工程师输入的文本指令转换为PLC代码。例

Qinmingyue13的博客 6169

AES对称加密CBC256

AES对称加密CBC256

IQ_HJB的博客 3319

Creo报错代码-9?手把手教你重新生成许可证文件(基于Creo 10.0)

本文详细解析Creo报错代码-9的成因及解决方案,重点介绍如何重新生成许可证文件以应对网络环境变化导致的验证失败。通过分步指南和高级技巧,帮助用户有效管理多网络环境下的Creo许可证问题,提升工作效率。

weixin_30839881的博客 557

Gazebo仿真平台模型搭建与修改

ROS里踩过的坑(一)Gazebo仿真平台模型搭建与修改文件讲解Models 文件World文件Launch文件模型编辑可视化编辑配置文件编辑模型展示如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出...

Redglass的博客 1万+

【AES】——对称加密及AES加密算法

目录 一、对称加密  1、什么是对称加密?  2、对称加密的工作过程  3、对称加密的优点  4、对称加密的两大不足 二、AES加密算法  1、什么是AES加密算法及AES加密算法的形成过程  2、AES的加密流程 (要理解AES的加密流程,会涉及到AES的五个关键词:分组密码体制、Padding、初始向量IV、密钥、四种加密模式)  3、AES的加密原理 (要理解AES的...

我爱吃土豆 9006

OpenCode:终端开源AI编程助手,多模型接入与实战指南

AI编程助手正在从IDE侧边栏走向终端环境。其核心原理是让模型直接读取项目文件、执行命令、查看报错,形成从诊断到修复的完整闭环,从而解决传统插件上下文割裂的问题。技术价值在于开源透明、模型无关,既可接入OpenAI等云端服务,也能通过Ollama连接本地模型,兼顾数据安全与离线场景。在工程实践中,它适用于长时间驻留项目、自动修Bug、团队统一AI工具链等需求。OpenCode正是这样一款终端AI助手,支持灵活配置第三方API密钥,提供免费档与Go套餐,并通过Skills技能系统让模型遵循标准操作流程。同时,

weixin_28745821的博客 326

AES对称加密的简单例子

不多说,直接上代码,对称加密只有一个密钥。用他来加密,也用它来解密。 package com.example.shirotest.utils; import org.apache.tomcat.util.codec.binary.Base64; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import java...

m0_37626203的博客 2182

MATLAB GUI 水果成熟度分级系统设计与实现

本文基于 MATLAB GUI 设计并实现了一款水果成熟度分级系统,能够准确地评估水果的成熟程度。在实现过程中,我们运用了 MATLAB 中的函数实现对图像的处理和分析,同时使用 GUI 界面增加了系统的易用性。值得一提的是,在实际操作中,我们应该结合实际需求对系统进行相应的改进与完善,以满足不同领域和应用场景下的需求。实验结果表明,本系统可以有效地检测出水果的成熟度,并对其进行精准的评分。因此,本文设计并实现了一款基于 MATLAB GUI 的水果成熟度分级系统。三、MATLAB 代码实现。

uote_e的博客 706

Qt代码-军用仿真系统基础框架

ui->mapClickLabel->setText(QString("地图点击:(%.1f, %.1f)米").arg(worldPos.x()).arg(worldPos.y()));emit simulationEvent(QString("添加实体: %1 (ID: %2)").arg(attr.name).arg(entity.id()));// 像素坐标→世界坐标(米)

寒寒豆豆软件公司的博客 168

对称加密——AES算法使用

对称加密 我们知道MD5加密的本质上是无法解密,是一个不可逆的过程,而网上有很多解密其实都是一种穷举法对比,根本不存在破解方法。 但是在业务中,很多时候存在解密的需要,这个时候我们可以采用对称加密,对称加密是指加密和解密都采用相同的秘钥。使用对称加密,发送方使用密钥将明文数据加密成密文,然后发送出去,接收方收到密文后,使用同一个密钥将密文解密成明文读取,我们可以用一个很形象的例子来解释对称加密,例如:只有一模一样的钥匙才能打开同一个锁,也只有那把钥匙能锁住那把锁。 AES详解 典型的对称加密算法有DES、

Java是世界上最好的语言 1万+

HLA分型

HLA分型 一、根据WES的tumor数据进行数据分型 选用hlahd 软件安装及使用 [root@18605fd8771e ~]# wget https://jaist.dl.sourceforge.net/project/bowtie-bio/bowtie2/2.4.1/bowtie2-2.4.1-linux-x86_64.zip [root@18605fd8771e ~]# unzip bowtie2-2.4.1-linux-x86_64.zip && mv bowtie2-2.4.1

qq_23435961的博客 2487

对称加密AES算法c语言实现

什么是对称加密:对称加密就是指,加密和解密使用同一个密钥的加密方式。 发送方使用密钥将明文数据加密成密文,然后发送出去,接收方收到密文后,使用同一个密钥将密文解密成明文读取。对称加密计算量小、速度块,适合对大量数据进行加密的场景。 常见的对称加密算法有DES、3DES和AES。 对称加密的缺点 密钥传输问题:如上所说,由于对称加密的加密和解密使用的是同一个密钥,所以对称加密的安全性就不仅仅...

小小城御园的博客 4912

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

对称加密及AES加密算法

目录 一、对称加密  1、什么是对称加密?  2、对称加密的工作过程  3、对称加密的优点  4、对称加密的两大不足 二、AES加密算法  1、什么是AES加密算法及AES加密算法的形成过程  2、AES的加密流程 (要理解AES的加密流程,会涉及到AES的五个关键词:分组密码体制、Padding、初始向量IV、密钥、四种加密模式)  3、AES的加密原理 (要理解AES的加密原理,会涉及到AES的四个关键词:密钥扩展、初始轮、重复轮、最终轮)  4、AES加密的代码  5、实际.

yizhiniu_xuyw的专栏 1868

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

python对称加密AES的使用

python对称加密AES的使用

hiluo302的博客 1218

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

AES对称加密和解密

转载:https://www.cnblogs.com/zuge/p/6109567.html AES 是对称的加密算法(PS:对称加密就是加密用的密码和解密用的密码是一样的,非对称就是加密和解密用的密钥不一样) AES是替代DES的新的加密标准,不能说是最安全的,比如采用非对称加密时,安全系数会更高的。 非对称加密的加密因子与解密因子是不同的,可以实现更高强度的加密,比如现在的数字证书就会采用这...

u012562216的博客 661

对称加密之AES加密

加密和解密过程中,我们一般使用byte,因为这样不容易产生乱码,如果直接是String类型,被加密解密后的String,对中文来说,前后的Unicode是否一致,就很难保证了。之前说了使用异或运算符加密。在Java中,有API提供,让我们实现AES对称加密。和之前的简单加密相比,AES加密对密钥是有要求的,所以,需要设计算法,使得密钥符合要求下面在一个类中实现AES对称加密import javax.

HoiDev 546

对称加密(AES)

1. 什么是对称加密? 加密和解密使用相同的密钥,加密秘钥就是解密秘钥 2. 常用对称加密算法 最常用的对称加密算法: DES、3DES(TripleDES)和AES DES:数据加密标准(现在用的比较少,因为它的加密强度不够,能够暴力破解) 3DES:原理和DES几乎是一样的,只是使用3个密钥,对相同的数据执行三次加密,增强加密强度。(缺点:要维护3个密钥,大大增加了维护成本) AES 高级加...

user2025的博客 907

AES256对称加密

需要引入bouncycastle库的jar包 package test; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import ja...

ddak56357的博客 846

AES对称加密 Java实现

AES是目前广泛使用的对称加密算法,支持128/192/256位密钥长度。它采用分组加密模式(如ECB、CBC、CTR等)处理变长数据,其中CBC和CTR模式安全性较高。明文不足16字节时需填充(如PKCS5Padding)。Java实现示例展示了密钥生成、ECB/CBC/CTR模式的加密方法,涉及密钥处理、初始向量(IV)生成等关键步骤,通过Cipher类完成加密操作,最后使用Base64编码输出密文。

从对比中寻找伤害 485

探索AES对称加密:Python代码实战

AES加密是一种对称加密算法,意味着加密和解密过程使用相同的密钥。这种特性使得AES加密在处理大量数据时非常高效。在本节中,我们将通过Python代码演示如何使用AES加密和解密数据。通过本文的介绍和代码实战,我们深入了解了AES对称加密技术的原理和实现方法。AES加密以其高效性和简便性在数据安全领域得到了广泛应用。通过Python编程,我们可以轻松地实现AES加密和解密功能,保护我们的数据安全。👇热门内容👇python使用案例与应用_安城安的博客-优快云博客软硬件教学_安城安的博客-优快云博客。

anananajiushiwo的博客 1051
上一篇: 使用Hash加密用户密码
下一篇: dll混淆方法
HQL_seven
博客等级 码龄6年 64粉丝 30原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HQL_seven

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值