/*
 * 哈希算法MD5和SHA1的C#实现
 * 
 * 
 * 夏春涛 Email:xChuntao@163.com 
 * Blog:http://bluesky521.cnblogs.com
 * 运行环境:.net2.0 framework
 */

/*
 * 关于哈希函数:
 *     哈希函数将任意长度的二进制字符串映射为固定长度的小型二进制字符串。
 * 加密哈希函数有这样一个属性:在计算上不大可能找到散列为相同的值的两个
 * 不同的输入;也就是说,两组数据的哈希值仅在对应的数据也匹配时才会匹配。
 * 数据的少量更改会在哈希值中产生不可预知的大量更改。
 * 
 * MD5 算法的哈希值大小为 128 位。
 * SHA1 算法的哈希值大小为 160 位。
 */

using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;

namespace MD5_App
{
    class Program
    {
        static void Main(string[] args)
        {
            string strSrc = "How are you?";
            Console.WriteLine("原文:" + strSrc);
            Console.WriteLine();

            Console.WriteLine("MD5哈希值:" + MD5_Hash(strSrc));
            Console.WriteLine();

            Console.WriteLine("SHA1哈希值:" + SHA1_Hash(strSrc));
            Console.WriteLine();
        }

        //MD5
        static public string MD5_Hash(string str_md5_in)
        {
            MD5 md5 = new MD5CryptoServiceProvider();
            byte[] bytes_md5_in = UTF8Encoding.Default.GetBytes(str_md5_in);
            byte[] bytes_md5_out = md5.ComputeHash(bytes_md5_in);
            string str_md5_out = BitConverter.ToString(bytes_md5_out);
            //str_md5_out = str_md5_out.Replace("-", "");
            return str_md5_out;
        }

        //SHA1
        static public string SHA1_Hash(string str_sha1_in)
        {
            SHA1 sha1 = new SHA1CryptoServiceProvider();
            byte[] bytes_sha1_in = UTF8Encoding.Default.GetBytes(str_sha1_in);
            byte[] bytes_sha1_out = sha1.ComputeHash(bytes_sha1_in);
            string str_sha1_out = BitConverter.ToString(bytes_sha1_out);
            //str_sha1_out = str_sha1_out.Replace("-", "");
            return str_sha1_out;
        }
    }
}

源码附件:/Files/bluesky521/DES_Hash_Demo.rar

最新文章

  1. JS添加DOM元素CSS权重BUG
  2. bzoj 4300: 绝世好题
  3. Xamarin.Forms项目无法添加服务引用
  4. jQuery mobile 前台设计中的css em的使用。
  5. C++的三种继承方式简述
  6. 在Qt中使用AnyCAD三维建模控件
  7. SGU111 Very simple problem
  8. 数据库设计的误区—>CHAR与VARCHAR
  9. :after伪类+content内容生成
  10. CentOS中安装配置Nginx
  11. vue的挖坑和爬坑之css背景图样式终极解决方法
  12. Spring Security 入门(1-4-1)Spring Security - 认证过程
  13. ubuntu 16.04下使用 python pip的安装问题。
  14. android_双击退出
  15. 网页中创建音频、视频和Flash等多媒体:object元素
  16. 疯狂JAVA——第二章 理解面向对象
  17. 边的双联通+缩点+LCA(HDU3686)
  18. cmake 查看配置选项
  19. BZOJ3769:BST again(记忆化搜索DP)
  20. Remember the Word UVALive - 3942(dp+trie)

热门文章

  1. golang struct的使用
  2. P1582 倒水 题解
  3. CSP-S2019 退役记/赛后总结
  4. Git 命令行解决冲突
  5. 从ORM框架到SQLAlchemy
  6. queue的一些用法
  7. Educational Codeforces Round 50 (Rated for Div. 2) F - Relatively Prime Powers(数学+容斥)
  8. spring @Primary-在spring中的使用(转)
  9. python-platform模块:平台相关属性
  10. Burpsuite 2.0.11 Beta 破解版下载