/*
 * 哈希算法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

哈希算法MD5和SHA1的C#实现的更多相关文章

  1. openssl evp 哈希算法(md5,sha1,sha256)

    1. 简述 openssl提供了丰富密码学工具,一些常用的哈希算法 比如md5,sha 可以直接用提供的md5.h ,sha.h 接口使用: 为了方便开发者使用,openssl 又提供了一个EVP, ...

  2. 加密解密(10)常见HASH算法:MD5(128bit),SHA1(160bit)

  3. SHA-1(安全哈希算法实现)

    如题,不知道sha-1的自己百度吧. #include <iostream> #include <vector> //定义vector数组 #include <strin ...

  4. hashlib —— Python 的 md5 和 sha1 加密

    python的md5和sha1加密 0. md5 与 sha1 MD5 的全称是 Message-Digest Algorithm 5(信息-摘要算法).128 位长度.目前 MD5 是一种不可逆算法 ...

  5. 哈希加密算法 MD5,SHA-1,SHA-2,SHA-256,SHA-512,SHA-3,RIPEMD-160 - aTool

    一.MD5哈希加密算法 atool.org MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致.是计算机广泛使用的散列算法之一(又译摘要算法. ...

  6. MD5和SHA512Managed ——哈希算法

    本文来自:http://www.cnblogs.com/chuncn/archive/2008/02/26/1082418.html C#的哈希 哈希算法是啥?哈希英文hash,是一种数学算法,它能把 ...

  7. SHA1 安全哈希算法(Secure Hash Algorithm)

    安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准 (Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signatu ...

  8. 转:MD5(Message-Digest Algorithm 一种哈希算法)

    什么是MD5算法 MD5讯息摘要演算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码杂凑函数,可以产生出一个128位元(16位元组)的散列值(hash val ...

  9. 转载:哈希加密算法 MD5,SHA-1,SHA-2,SHA-256,SHA-512,SHA-3,RIPEMD-160 - aTool

    http://www.atool.org/hash.php 一.MD5哈希加密算法 MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于确保信息传输完整一致.是计算 ...

随机推荐

  1. sessionStorage 与 localStorage 重新认识?

    之前写过一次关于 js存储的总结,但是今天在项目中遇到一个bug让我重新在认识 sessionStorage 与 localStorage.以下的介绍都是基于同源下进行的,仔细看下面的案例: a.ht ...

  2. C++ 内存泄露和内存越界

    内存泄露:分配了内存而没有释放,逐渐耗尽内存资源,导致系统崩溃内存越界: 打个比方 就是你有一个500ml的水瓶,然后你倒在瓶里的水大于500ml 那个多余的就会流出来... 1. 原理分析经常有些新 ...

  3. JDBC上

    JDBC实战--打通数据库 代码实现: package com.imooc.db; import java.sql.Connection; import java.sql.DriverManager; ...

  4. ubuntu nginx 启动多个Django项目

    1.将 /etc/nginx/sites-enabled/ 目录下的nginx默认配置文件default,重命名,例如:default1 2.给每个Django项目添加nginx.conf配置文件,建 ...

  5. config文件的实现

    https://www.cnblogs.com/jiayouwyhit/p/3836510.html //Config.h #pragma once #include <string> # ...

  6. 题解 [BZOJ4710] 分特产

    题面 解析 step 1 我们先考虑下有人没有的情况吧, 那对于每个特产就是放隔板的情况了, 设\(a[i]\)为第\(i\)个特产的个数, 那么第\(i\)个特产的方案数就是\(C_{a[i]+n- ...

  7. Mac OS 系统开发环境的一些坑

    最近换 Mac OS 系统开发,运行项目时遇到各种报错,记录下: 1.拉取项目后,需要安装依赖 npm install ,提示需要安装 xcode,报错如下. 从官网下载 xcode 时提示要更新最新 ...

  8. lumen 队列处理

    数据库要使用 database 队列驱动,你需要数据表保存任务信息(比如失败任务).要生成创建这些表的迁移,可以在项目目录下运行 Artisan 命令 queue:table,迁移被创建之后,可以使用 ...

  9. 外观模式(Facade)---结构型模式

    1 基础知识 定义:提供了一个统一的接口(外观类),用来访问子系统中的一群接口.特征:定义了一个高层接口让子系统更容易使用,减少了外部与子系统内多个模块的耦合. 本质:封装交互,简化调用. 优点:简化 ...

  10. Casual Literary Notes

    写在前面的话: 人生中总会有一些惊喜,它会给予坚守的人们以奖励,提醒着人们,生命中不光是辛劳和付出. 很多收获,最后看来,往往都是因为当初的那一点坚持. -- 雷宇<现场> 1.18 上午 ...