作者:caocao(网络隐士),http://www.caocao.name,http://www.caocao.mobi
转载请注明来源:http://caocao.iteye.com/blog/96902
隐士为了在asp.net环境里应用Blowfish加密技术实现单点登录,对Blowfish.NET进行了简单的封装。要下载Blowfish.NET包可自行Google之。
闲话不多说,上代码:
c# 代码
- public string Decrypt(string inString,string keyString)
- {
- UTF8Encoding ue = new UTF8Encoding();
- byte[] key=ue.GetBytes(keyString);
- byte[] inBuffer=ue.GetBytes(inString);
- BlowfishECB ecb=new BlowfishECB(key, 0, key.Length);
- try
- {
- inBuffer=Convert.FromBase64String(inString);
- if (inBuffer.Length % BlowfishECB.BLOCK_SIZE != 0)
- {
- return null;
- }
- }
- catch (FormatException)
- {
- return null;
- }
-
- byte[] outBuffer = new byte[inBuffer.Length];
- Array.Clear(outBuffer, 0, outBuffer.Length);
- ecb.Decrypt(inBuffer,
- 0,
- outBuffer,
- 0,
- inBuffer.Length);
- return ue.GetString(outBuffer, 0, outBuffer.Length);
- }
-
- public string Encrypt(string inString,string keyString)
- {
- UTF8Encoding ue = new UTF8Encoding();
- byte[] key=ue.GetBytes(keyString);
- byte[] inStringBytes=ue.GetBytes(inString);
- int length=inStringBytes.Length;
- length=Convert.ToInt32(Math.Ceiling(1.0*length/BlowfishECB.BLOCK_SIZE))*BlowfishECB.BLOCK_SIZE;
-
- byte[] inBuffer = new byte[length];
- byte[] outBuffer = new byte[length];
- Array.Clear(inBuffer, 0, inBuffer.Length);
- Array.Clear(outBuffer, 0, outBuffer.Length);
- Array.Copy(inStringBytes, inBuffer, inStringBytes.Length);
-
- BlowfishECB ecb=new BlowfishECB(key, 0, key.Length);
- int nCount=ecb.Encrypt(inBuffer,
- 0,
- outBuffer,
- 0,
- inBuffer.Length);
- return Convert.ToBase64String(outBuffer);
- }
实现类似功能的PHP代码很简洁:
PHP 代码
- $outString=base64_encode(@mcrypt_encrypt(MCRYPT_BLOWFISH, $key, $inString, MCRYPT_MODE_ECB));
- $outString=@mcrypt_decrypt(MCRYPT_BLOWFISH, $key, base64_decode($inString), MCRYPT_MODE_ECB);
至此彻底打通PHP,asp.net之间Blowfish加密的任督二脉。
分享到:
相关推荐
用C#,对Blowfish.NET进行了简单的封装。 来源:http://caocao.iteye.com/blog/96902
在C#中,可以利用.NET框架提供的System.Security.Cryptography命名空间来实现各种加密算法,包括Blowfish。 Blowfish算法的特点在于其快速的加密速度和强大的安全性。它采用64位的密钥,可以支持从32位到448位之间...
BLOWFISH则提供可变长度密钥,运行效率高。除此之外,还有ElGamal、Deffie-Hellman和椭圆曲线加密(ECC)等更先进的算法。 单向散列函数,如MD5和SHA,用于生成消息摘要,确保数据完整性。MD5可将任意长度数据转化...
1. **加密算法支持**:BouncyCastle.Crypto.dll 提供了多种加密算法的实现,包括对称加密(如AES、Blowfish、DES)、非对称加密(如RSA、DSA、ECDSA)、哈希函数(如SHA-1、SHA-256、MD5)和消息认证码(MAC)。...
- Blowfish算法是一种对称加密算法,用于数据加密,其解密过程与加密过程相反。VB或C#中实现Blowfish需要理解其核心流程,包括密钥扩展和加密/解密循环。 4. N-Tier架构: - N-Tier架构是一种多层架构,常见的三...
- **对称加密**:如AES、Blowfish、DES等,适用于大量数据的快速加密。 - **消息摘要**:MD5、SHA-1、SHA-256等哈希函数,用于计算数据的唯一标识。 - **数字签名**:用于验证数据的完整性和来源。 - **密钥生成与...
1. **对称加密**:如AES、DES、3DES、Blowfish等,用于快速加密大量数据,适合于保密性和效率要求高的场景。 2. **非对称加密**:如RSA、DSA、ECC(椭圆曲线加密),用于密钥交换和数字签名,确保数据的完整性和...
BouncyCastle支持常见的对称加密算法,如AES(高级加密标准)、DES(数据加密标准)和Blowfish。这些算法用于快速加密大量数据,同一密钥既用于加密也用于解密,适合于保护存储或传输中的数据。 2. **非对称加密**...
Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密 Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四”...
"+" 表示 RSA/1024 位, blowfish/128 位加密 "-" 表示 RSA/512 位, RC2/40 位加密 - 如果你收到的消息附带了文件, 将会显示出附件按钮. 点击按钮即可保存文件. 其他 > - 如果需要(通过路由器)连接到广域...
"+" 表示 RSA/1024 位, blowfish/128 位加密 "-" 表示 RSA/512 位, RC2/40 位加密 - 如果你收到的消息附带了文件, 将会显示出附件按钮. 点击按钮即可保存文件. 其他 > - 如果需要(通过路由器)连接到...
"+" 表示 RSA/1024 位, blowfish/128 位加密 "-" 表示 RSA/512 位, RC2/40 位加密 - 如果你收到的消息附带了文件, 将会显示出附件按钮. 点击按钮即可保存文件. 其他 > - 如果需要(通过路由器)连接到...