开发者社区> 小麋鹿666> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

string扩展实现强悍的.Net不可逆加密方法 (转载)

简介:
+关注继续查看
 

最近写加密方法,发现同类的加密方法的基类都是一直的,用泛型整合了一些加密方法,供大家参考

实现方法:

 

复制代码
ContractedBlock.gifExpandedBlockStart.gifCode
using System;
using
 System.Text;
using
 System.Security.Cryptography;

namespace
 Zb
{
    
public static class
 StringExtensions
    {
        
/// <summary>

        
/// 不可逆加密
        
/// </summary>

        
/// <typeparam name="Algorithm">加密HASH算法</typeparam>
        
/// <typeparam name="StringEncoding">字符编码</typeparam>
        
/// <param name="str"></param>
        
/// <returns></returns>
        public static string EncryptOneWay<Algorithm, StringEncoding>(this string str)
            
where
 Algorithm : HashAlgorithm
            
where
 StringEncoding : Encoding
        {
            Encoding enco 
= Activator.CreateInstance<StringEncoding>
();
            
byte[] inputBye =
 enco.GetBytes(str);

            
byte[] bytes = Activator.CreateInstance<Algorithm>
().ComputeHash(inputBye);

            
return System.BitConverter.ToString(bytes).Replace("-"""
); ;
        }
        
/// <summary>

        
/// 不可逆加密
        
/// </summary>

        
/// <typeparam name="Algorithm">加密HASH算法</typeparam>
        
/// <param name="str">字符编码</param>
        
/// <returns></returns>
        public static string EncryptOneWay<Algorithm>(this string str)
            
where
 Algorithm : HashAlgorithm
        {
            
return str.EncryptOneWay<Algorithm, System.Text.UTF8Encoding>
();
        }
    }
}
复制代码

使用方法:

 1 MD5 : 

string temp = "123".EncryptOneWay<System.Security.Cryptography.MD5CryptoServiceProvider, System.Text.UTF8Encoding>();
2. sha1:
string temp = "123".EncryptOneWay<System.Security.Cryptography.SHA1CryptoServiceProvider>();
3 SHA256
 string temp = "123".EncryptOneWay<System.Security.Cryptography.SHA256Cng>();
等所有的HASH算法都可以用
版权说明

  如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。
  作      者:温景良
  文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/

posted @ 2009-04-27 16:05 温景良(Jason) Views(353) Comments(2) Edit 收藏

  
#1楼 2009-05-06 17:33 | yangyh  
写了这么多文章...
膜拜
http://pic.cnblogs.com/face/u54057.jpg
  
#2楼19501112010/11/3 9:37:21 2010-11-03 09:37 | sunrongshuai  
这个好!

公告

 
本文转自我的程序人生博客园博客,原文链接:http://www.cnblogs.com/wenjl520/archive/2009/04/27/1444678.html,如需转载请自行联系原作者
 
 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
你知道String类为什么不能被继承吗?
在找工作面试的时候我们经常会被问到一个问题,那就是String类能被继承吗?为什么?我们都知道String类不能被继承,但为什么不能却不能回答地很完整。
308 0
【氚云】佰荣名品家居借力氚云,升级企业管理之道
佰荣名品家居借力氚云,升级企业管理之道
51 0
从字节码看String
从字节码看String
133 0
实现前端MD5加密与记住用户名密码功能
在玩一个商城秒杀的项目,前端密码实现了MD5加密,但是原来的登录网页实现了记住用户密码功能,现在问题来了。
2599 0
C++ int与string的转化
转自:http://www.cnblogs.com/nzbbody/p/3504199.html int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释。缺省情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀,告诉编译器按照不同进制去解释。
688 0
C++ int与string的转化
int本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释。缺省情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀,告诉编译器按照不同进制去解释。8进制(oct)---前缀加0,16进制(hex)---前缀加0x或者0X。
884 0
+关注
385
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载