C# DESC加密

DESC加密方法

直接上代码:

1、加密

/// <summary>
        /// 加密
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        public static string EncryptParameter(object obj)
        {
            if (obj == null)
            {
                return "";
            }
            StringBuilder builder = new StringBuilder();
            try
            {
                string str = obj.ToString();
                DESCryptoServiceProvider provider = new DESCryptoServiceProvider();

                provider.Key = Encoding.UTF8.GetBytes(_securityKey);

                provider.IV = Encoding.UTF8.GetBytes(_securityKey);

                byte[] bytes = Encoding.UTF8.GetBytes(str);

                MemoryStream stream = new MemoryStream();

                CryptoStream stream2 = new CryptoStream(stream, provider.CreateEncryptor(), CryptoStreamMode.Write);

                stream2.Write(bytes, 0, bytes.Length);

                stream2.FlushFinalBlock();

                foreach (byte num in stream.ToArray())
                {

                    builder.AppendFormat("{0:X2}", num);
                }

                stream.Close();

            }
            catch (Exception ex)
            {
                LogHelper.LogError(ex);
            }
            return builder.ToString();

        }

2、解密

        /// <summary>
        /// 解密
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string DecryptParameter(string str)
        {
            try
            {
                DESCryptoServiceProvider provider = new DESCryptoServiceProvider();

                provider.Key = Encoding.ASCII.GetBytes(_securityKey);

                provider.IV = Encoding.ASCII.GetBytes(_securityKey);

                byte[] buffer = new byte[str.Length / 2];

                for (int i = 0; i < (str.Length / 2); i++)
                {

                    int num2 = Convert.ToInt32(str.Substring(i * 2, 2), 0x10);

                    buffer[i] = (byte)num2;

                }

                MemoryStream stream = new MemoryStream();

                CryptoStream stream2 = new CryptoStream(stream, provider.CreateDecryptor(), CryptoStreamMode.Write);

                stream2.Write(buffer, 0, buffer.Length);

                stream2.FlushFinalBlock();

                stream.Close();

                return Encoding.GetEncoding("GB2312").GetString(stream.ToArray());
            }
            catch
            {
                return string.Empty;
            }
        }

设置一个_securityKey字符串,加密、解密的密钥要同一个才行。

因此正如其它人加密后的文件,用常用方法是打不开的,密钥不一样~

时间: 2024-11-03 21:14:30

C# DESC加密的相关文章

DESC加密与解密

using System; using System.IO;  using System.Security.Cryptography;  using System.Text;  using System.Web.Security; public static string Decrypt(string Text) { return Decrypt(Text, "litianping");       //密钥可以自己填写 } public static string Decrypt(s

DESC 加密,解密

/// <summary> /// 加密.解密 /// </summary> public class CryptoSecurity { /// <summary> /// 默认密钥向量 /// </summary> private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF }; private static string encryptKey = DateTi

PHP 简单的加密解密方法

本算法的基础:给定字符A B,A^B=C,C^B=A,即两次异或运算可得到原字符.实现代码如下: /** * @desc加密 * @param string $str 待加密字符串 * @param string $key 密钥 * @return string */ function encrypt($str, $key){ $mixStr = md5(date('Y-m-d H:i:s').rand(1000)); $tmp = ''; $strLen = strlen($str); for

关于Eclipse不能进行加密算法的解决方案

对于Ecilpse不能够进行加密算法,有没有人和我一样觉得恼火呢? DEsc加密失败: Hmac加密失败: 针对这个问题,这两个加密算法用到JAR包一样的,那么可以确认的事情就是JAR包缺少或者冲突,对于缺少或者冲突我们的解决办法是什么?有以下几种问题导致该IDE不能实现加密算法: 1.第一可能是Eclipse的开发的JREs配置有误,我们需要正确的选择JRE的目录 2第二可能如果我们的Eclipse开发工具你确认没有问题了,那么我们的系统环境配置的目录会不会有问题,需要耐心的检查 3,第三可能

iOS_开源项目表

Json格式 属性:githubList         对应的是一个数组 数组成员是:字典 字典:二个健值对,分别是: name-->'分类名'  例如:'系统基础库' list------>数组 其中数组元素又是字典: 字典:二个健值对,分别是 name-->'子分类'   例如: 'Category/Util' list------>数组 其中数组元素又是字典,一个真正的可拼接成URL的字典: 拼接方式如下:http://github.com/[name]/[owner] {

C#,调用dll产生 &quot;尝试读取或写入受保护的内存 。这通常指示其他内存已损坏。&quot;的问题

由于易语言与c#做的DESC加解密方式,返回的数据不一致,所以,我用易语言写了一个dll,供c#调用, 结果在post的时候,有时候能正确返回数据,有时候则不能正常返回,而是返回空数据(c#没有做异常处理) 后来, 在c#端抛出异常后发现,原来返回空值,都已经报错了(提示:尝试读取或写入受保护的内存 .这通常指示其他内存已损坏.) 在网上查了,在c#调用 dll的时候,用指针的方式,就没有再出现问题. /// <summary> /// 这是易语言的DESC加密解密的dll /// </

微信分享自定义设置Title与Desc

前端Js引用: 1 <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> 2 <script> 3 function wxconfig(data) { 4 wx.config({ 5 // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印. 6 debug: fals

Java AES 加密工具类

package com.microwisdom.utils; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.logging.Level; import java.util.logging.Logger; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import jav

Android接口安全 - RSA+AES混合加密方案

转载请注明出处: http://blog.csdn.net/aa464971/article/details/51034462 本文以Androidclient加密提交数据到Java服务端后进行解密为样例. 生成RSA公钥和密钥的方法请參考: http://blog.csdn.net/aa464971/article/details/51035200 Android端的加密思路须要4步: 1.生成AES密钥: 2.使用RSA公钥加密刚刚生成的AES密钥: 3.再使用第1步生成的AES密钥,通过A