以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]狐表引用vb.net编写DEC加密解密程序? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=42404) |
||||
-- 作者:浙江仔 -- 发布时间:2013/11/11 8:50:00 -- [求助]狐表引用vb.net编写DEC加密解密程序? 网上找到这么一个加密解密的方法,不知道怎么转换到狐表中来,再次求助,谢谢帮忙: 在vb.NET中编写DEC加密程序 ,因为vb.NET的类库中就自带了相应的函数,下面分别是加密函数和解密函数。 Public Shared Function Encrypt(ByVal pToEncrypt As String, ByVal sKey As String) As String Dim DES As New DESCryptoServiceProvider() Dim inputByteArray() As Byte inputByteArray = Encoding.Default.GetBytes(pToEncrypt) \'\'建立加密对象的密钥和偏移量 \'\'原文使用ASCIIEncoding.ASCII方法的GetBytes方法 \'\'使得输入密码必须输入英文文本 DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey) DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey) \'\'写二进制数组到加密流 \'\'(把内存流中的内容全部写入) Dim ms As New System.IO.MemoryStream() Dim cs As New CryptoStream(ms, DES.CreateEncryptor, CryptoStreamMode.Write) \'\'写二进制数组到加密流 \'\'(把内存流中的内容全部写入) cs.Write(inputByteArray, 0, inputByteArray.Length) cs.FlushFinalBlock() \'\'建立输出字符串 Dim ret As New StringBuilder() Dim b As Byte For Each b In ms.ToArray() ret.AppendFormat("", b) Next Return ret.ToString() End Function ------------------------------------------------------------------ 解密函数: Public Shared Function Decrypt(ByVal pToDecrypt As String, ByVal sKey As String) As String Dim DES As New DESCryptoServiceProvider() \'\'把字符串放入byte数组 Dim len As Integer len = pToDecrypt.Length / 2 - 1 Dim inputByteArray(len) As Byte Dim x, i As Integer For x = 0 To len i = Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16) inputByteArray(x) = CType(i, Byte) Next \'\'建立加密对象的密钥和偏移量,此值重要,不能修改 DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey) DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey) Dim ms As New System.IO.MemoryStream() Dim cs As New CryptoStream(ms, DES.CreateDecryptor, CryptoStreamMode.Write) cs.Write(inputByteArray, 0, inputByteArray.Length) cs.FlushFinalBlock() Return Encoding.Default.GetString(ms.ToArray) End Function ------------------------------------------- 两个函数中第一个参数是待加密或解密的字符串,sKey是使用的密钥,必须是8位,使用的时候要注意哦,不然会出错的。
dll文件:
|
||||
-- 作者:浙江仔 -- 发布时间:2013/11/11 10:10:00 -- 人工置顶 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2013/11/11 10:10:00 -- 1、添加命名空间,空间缩写为sur, sur可以随便取,但是要和代码保持一致:
2、将下面的修改后的代码复制到foxtable的全局代码中,注意加粗的:
Public Function Encrypt(ByVal pToEncrypt As String, ByVal sKey As String) As String
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2013/11/11 10:11:00 -- 所以vb.net的代码其实可以直接在foxtable用的,只是命名空间 |
||||
-- 作者:浙江仔 -- 发布时间:2013/11/11 14:54:00 -- 以下是引用狐狸爸爸在2013-11-11 10:10:00的发言:
1、添加命名空间,空间缩写为sur, sur可以随便取,但是要和代码保持一致:
2、将下面的修改后的代码复制到foxtable的全局代码中,注意加粗的:
Public Function Encrypt(ByVal pToEncrypt As String, ByVal sKey As String) As String .......
多谢狐爸,给了这么易懂的范本。 System.Security.Cryptography命名空间直接可以用的啊,我还以为还要添加外部引用。
但是程序设置好后,加密解密不起作用,不知道是不是本人设置不当,还望指点。谢谢
|
||||
-- 作者:浙江仔 -- 发布时间:2013/11/11 15:29:00 -- 找到原因了,原来是一个代码问题,红色: \'加密 \'解密
[此贴子已经被作者于2013-11-11 15:45:55编辑过]
|