`
caocao
  • 浏览: 270176 次
  • 来自: 上海
社区版块
存档分类
最新评论

DES加密方法在PHP和.NET平台间的无缝连接

    博客分类:
  • .NET
阅读更多
作者:caocao(网络隐士),http://www.caocao.name/http://www.caocao.mobi/
转载请注明来源:http://www.iteye.com/topic/178321

有个项目要跨PHP平台和.NET平台进行数据交换,数据还必须是DES加密的,在折腾了一阵后隐士终于摸清楚代码该如何写,加密数据才能够通用于两个平台。

PHP加密方式 写道
$key="********";
$iv="********";
$message="kjsdfuihyweflgjerogjreg";
echo base64_encode(mcrypt_encrypt(MCRYPT_DES, $key, $message, MCRYPT_MODE_CBC, $iv));


C#加密解密方式 写道

        /// <summary>
        /// DES加密方法,keyBytes和ivBytes必须为64bit即8位的
        /// </summary>
        /// <param name="inBytes">待加密数组</param>
        /// <param name="keyBytes">key数组</param>
        /// <param name="ivBytes">iv数组</param>
        /// <returns>加密完的数组</returns>
        public static byte[] DESEncryptWithCBCZeros(byte[] inBytes, byte[] keyBytes, byte[] ivBytes)
        {
            using (MemoryStream memoryStream = new MemoryStream())
            {
                DES desCBC = DES.Create();
                desCBC.Mode = CipherMode.CBC;
                desCBC.Padding = PaddingMode.Zeros;
                using (CryptoStream cryptoStream = new CryptoStream(memoryStream, desCBC.CreateEncryptor(keyBytes, ivBytes), CryptoStreamMode.Write))
                {
                    cryptoStream.Write(inBytes, 0, inBytes.Length);
                    cryptoStream.FlushFinalBlock();
                    byte[] bytes = memoryStream.ToArray();
                    return bytes;
                }
            }
        }

        /// <summary>
        /// DES解密方法,keyBytes和ivBytes必须为64bit即8位的
        /// </summary>
        /// <param name="inBytes">待解密数组</param>
        /// <param name="keyBytes">key数组</param>
        /// <param name="ivBytes">iv数组</param>
        /// <returns>解密完的数组</returns>
        public static byte[] DESDecryptWithCBCZeros(byte[] inBytes, byte[] keyBytes, byte[] ivBytes)
        {
            using (MemoryStream memoryStream = new MemoryStream(inBytes))
            {
                DES desCBC = DES.Create();
                desCBC.Mode = CipherMode.CBC;
                desCBC.Padding = PaddingMode.Zeros;
                using (CryptoStream cryptoStream = new CryptoStream(memoryStream, desCBC.CreateDecryptor(keyBytes, ivBytes), CryptoStreamMode.Read))
                {
                    byte[] outEncrypt = new byte[inBytes.Length];
                    cryptoStream.Read(outEncrypt, 0, outEncrypt.Length);
                    return outEncrypt;
                }
            }
        }



C#调用方式 写道

            try
            {
                byte[] inBytes = Encoding.UTF8.GetBytes("kldfgwehfo23905hfkjvbsdcsdc");
                byte[] keyBytes = Encoding.ASCII.GetBytes("********");
                byte[] ivBytes = Encoding.ASCII.GetBytes("********");
                byte[] outBytes = StringEncryptHelper.DESEncryptWithCBCZeros(inBytes, keyBytes, ivBytes);
                Console.WriteLine(Convert.ToBase64String(outBytes));

                Console.WriteLine(Encoding.UTF8.GetString(StringEncryptHelper.DESDecryptWithCBCZeros(outBytes, keyBytes, ivBytes)));
            }
            catch (CryptographicException e)
            {
                Console.WriteLine(e.StackTrace);
                Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
            }

分享到:
评论
1 楼 suntongo 2009-02-28  
直接用SSL,.net和java都完美支持,加密/解密过程完全透明,而且安全性最高。

相关推荐

    DES加密解密算法(vb.net)

    vb.net实现des加密解密算法,winform程序,基于.net framework 2.0开发

    DES加密 java与.net可以相互加密解密两种方法

    在Java和.NET平台上,我们可以使用内置的加密库实现DES加密和解密。本文将详细介绍如何在Java和.NET中实现互操作的DES加密解密,并提供两种不同的方法。 **方法一:使用标准库** 1. **Java实现**: - 引用`javax....

    DES加密算法 .net实现

    本资源提供了在.net框架下的DES加密算法的代码,思想,具有良好的可视化操作界面,和清晰的des算法思想的思路

    ASP.NET实现 DES加密解密类

    本文将详细解释如何在ASP.NET中使用C#实现DES加密和解密。 1. **DES加密算法**: DES是一种分组密码,它使用64位的明文块和64位的密钥进行操作。在实际应用中,由于DES的安全性相对较低,通常会使用3DES(Triple ...

    3des加密vb.net,利用vbv.net自带控件进行加密数据

    在.NET框架中,VB.NET提供了一系列的类库用于数据安全,包括加密和解密操作。在本场景中,我们关注的是“3DES”加密,这是一种加强版的DES(Data Encryption Standard)算法,常用于保护敏感数据的安全。VB.NET内建...

    javascript前端DES加密,VB.NET、C#后端服务器解密

    DES(Data Encryption Standard)是一种对称加密算法,它使用相同的密钥进行加密和解密。在前端,JavaScript可以用于实现DES加密,通常通过内置的Web Cryptography API或者第三方库如CryptoJS。在后端,VB.NET和C#都...

    VB.Net实现des加密算法的实例

    VB.Net实现des加密算法的实例 对于加密算法研究的朋友或许能够得到帮助

    DES加密算法 C#.NET2008实现

    综上所述,DES加密算法在C#.NET 2008中的实现涉及了DESCryptoServiceProvider类的使用,密钥和IV的设置,以及加密和解密过程。虽然DES已不再是最安全的选择,但它仍然是理解对称加密原理的一个重要例子。

    VB.net、PHP、DELPHI、Javascript、Perl通用的DES、DES3加密算法

    做的时候发现VB.net带的DES加密算法和我PHP里的不一样,PHP已经是成型产品,不能修改,于是就把PHP里的加密算法翻译了一遍。一天一夜,真不容易。主要问题出在PHP里在做位运算的时候截断数据,搞的我VB.net里费了好...

    VB.NET DES加密

    VB.NET 编写的加密类采用数据加密标准 (DES) 算法

    VB实现DES加密解密算法,vb加密和解密,VBA

    在VB中,可以使用.NET框架提供的System.Security.Cryptography命名空间下的DESCryptoServiceProvider类来实现DES加密和解密。 1. **DES加密过程**: - 创建DESCryptoServiceProvider对象,这是VB中实现DES算法的...

    des加密解密JAVA与.NET互通实例

    在Java和.NET之间进行互通时,DES加密解密的实现是至关重要的,因为这允许两个平台之间的应用程序能够共享加密过的数据并正确地解密。下面将详细解释DES加密解密的基本原理、Java实现以及如何在Java与.NET之间进行...

    C# 3DES 加密源码

    这个压缩包中的"3DES"文件很可能是包含了这样的源代码示例,你可以参考学习,了解如何在C#项目中实现3DES加密和解密功能。如果你在实际开发中遇到任何问题,这个源码可以作为一个起点,帮助你理解和实现自己的加密...

    用DES加密数据库信息,增强Asp.net的安全性.pdf

    在Asp.net项目中,首先需要实现两个关键方法:`Encrypt`用于加密数据库连接字符串,而`Decrypt`则用于在应用程序内部使用时解密该字符串。这两个方法的核心逻辑在于使用`DESCryptoServiceProvider`类来创建加密器和...

    ASP.NET的MD5和DES加密和解密算法

    ASP.NET的MD5和DES加密和解密算法 非常好的资源 欢迎大家参考

    超级加密解密 V1.3 - .Net源码 - C#

    1. 对称加密:这种加密方法使用同一密钥进行加密和解密,如DES、3DES和AES等。在“超级加密解密 V1.3”中,可能采用了其中的一种或多种对称加密算法,以确保数据的安全性。对称加密速度快,适合大量数据的快速处理。...

    Asp.net 2.0 DES加密解密

    提供Asp.net 2.0文件和字符串的DES算法加密解密. 在项目的Bin文件夹里引用这个文件就可以了,或者直接考到Bin目录里。。专门给初学者用的呵呵。。

    android的des加密

    在Android中,我们可以使用Java的`javax.crypto`包来实现DES加密和解密。 描述中提到的".net自带的des加密是一样的",意味着Android上的DES实现与.NET框架中的DES加密算法在原理和效果上是兼容的。这意味着,如果你...

    三平台通用加密算法(java/.net/Object-C)

    "三平台通用加密算法"指的是可以在Java、.Net和Object-C这三个不同的开发平台上使用的相同加密逻辑。这种跨平台的兼容性使得开发人员可以更容易地在各种环境中实现一致的安全策略。 在Java中,加密通常依赖于Java ...

    ASP.NET url参数传递加密及解密方法

    以下是一些关于如何在ASP.NET中进行URL参数加密和解密的关键知识点: 1. **加密需求**:在URL中传递敏感信息时,如用户ID、搜索查询或任何个人信息,必须加密以防止被未授权的第三方截取。这可以通过将明文数据转换...

Global site tag (gtag.js) - Google Analytics