调试好用的AES加密算法 和 安卓AES加密对应算法


在C# 中的AES加密算法


项目背景: 我要用C# 些WCF服务建立服务器端的程序、为安卓客户端提供访问端口,供安卓端和Oracle 、SQL Server 数据库对接执行SQL命令。

字符串的传输为了避免泄漏信息和SQL 注入攻击,采用AES加密算法传递字符串、并采用BASE 64 字符串转义来防止URL对特殊字符的异常。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace AES_Dome
{
    class Program
    {
        private static string key = "1234567890123456";//key,可自行修改
        private static string iv = "0000000000000000"; //偏移量,可自行修改
        static void Main(string[] args)
        {
            string encrytpData = Encrypt("SELECT * FROM [MesConfig].[dbo].[SYS_PROGRAM_NAME]", key, iv);
            Console.WriteLine(encrytpData);

            string B = encrytpData;
            //PaddingMode
            string decryptData = Decrypt(B, key, iv, PaddingMode.PKCS7);
            Console.WriteLine("PKCS7 "+decryptData);
            decryptData = Decrypt(B, key, iv, PaddingMode.ANSIX923);
            Console.WriteLine("ISO10126 " + decryptData);
            Console.ReadLine();
        }
        public static string Encrypt(string toEncrypt, string key, string iv)
        {
            byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
            byte[] ivArray = UTF8Encoding.UTF8.GetBytes(iv);
            byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt);

            RijndaelManaged rDel = new RijndaelManaged();
            rDel.BlockSize = 128;
            rDel.KeySize = 256;
            rDel.FeedbackSize = 128;
            rDel.Padding = PaddingMode.PKCS7;
            rDel.Key = keyArray;
            rDel.IV = ivArray; //new byte[16]; //不采用密钥,默认采用16个0 ivArray;
            rDel.Mode = CipherMode.CBC;

            ICryptoTransform cTransform = rDel.CreateEncryptor();
            byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length);

            return Convert.ToBase64String(resultArray, 0, resultArray.Length);
        }

        public static string Decrypt(string toDecrypt, string key, string iv,PaddingMode PM)
        {

            try
            {
                byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key);
                byte[] ivArray = UTF8Encoding.UTF8.GetBytes(iv);
                byte[] toEncryptArray = Convert.FromBase64String(toDecrypt
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值