以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于System.Security.Cryptography加密请教  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=173247)

--  作者:chen_sheng
--  发布时间:2021/11/21 9:24:00
--  关于System.Security.Cryptography加密请教
随着不断对狐表的深入系统安全也提上了日程
借鉴了论坛杰哥优秀的加密方案,发现一个问题,把他的加密全局函数抄下来不能编译成功,他的项目运行又没有问题
也看了没有看到有变量声明
System.Security.Cryptography= ssc
但是他的程序ssc. 是可以编译通过的,卡壳了


图片点击可在新窗口打开查看此主题相关图片如下:018bcf37-ab57-4e78-b4e4-dcaa45d2d43b.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:dingtalk_20211121091901.jpg
图片点击可在新窗口打开查看



--  作者:有点蓝
--  发布时间:2021/11/21 20:09:00
--  
看引用和命名空间:http://www.foxtable.com/webhelp/topics/1936.htm
--  作者:chen37280600
--  发布时间:2021/11/21 21:53:00
--  
你没改过引用和命名空间,就不能偷懒用SSC简写,用下面的标准写法吧

\'加密---
\'AES,ECB,PKCS7,返回Base64结果
\'通过AesEncrypt(内容)使用
Public Function AesEncrypt(ByVal str As String) As String
If String.IsNullOrEmpty(str) Then
    Return ""
Else
    Dim key As String ="4hXnn8NUtss5OUTR" \'与前端约定好的固定秘钥
    Dim toEncryptArray As Byte() = Encoding.UTF8.GetBytes(str)
    Dim rm  = New System.Security.Cryptography.RijndaelManaged
    rm.Key = Encoding.UTF8.GetBytes(key)
    rm.Mode = System.Security.Cryptography.CipherMode.ECB
    rm.Padding = System.Security.Cryptography.PaddingMode.PKCS7
    
    Dim cTransform = rm.CreateEncryptor()
    Dim resultArray As Byte() = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length)
    Return Convert.ToBase64String(resultArray, 0, resultArray.Length)
End If
End Function
\'加密---

\'解密---
\'通过AesDecrypt(内容)使用
Public Function AesDecrypt(ByVal str As String) As String
If String.IsNullOrEmpty(str) Then
    Return ""
Else
    Dim key As String ="4hXnn8NUtss5OUTR" \'与前端约定好的固定秘钥
    Dim toEncryptArray As Byte() = Convert.FromBase64String(str)
    Dim rm  = New System.Security.Cryptography.RijndaelManaged
    rm.Key = Encoding.UTF8.GetBytes(key)
    rm.Mode = System.Security.Cryptography.CipherMode.ECB
    rm.Padding = System.Security.Cryptography.PaddingMode.PKCS7
    
    Dim cTransform = rm.CreateDecryptor()
    Dim resultArray As Byte() = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length)
    Return Encoding.UTF8.GetString(resultArray)
End If
End Function
\'解密---
[此贴子已经被作者于2021/11/21 21:55:08编辑过]

--  作者:cnsjroom
--  发布时间:2021/11/22 0:07:00
--  回复:(chen37280600)你没改过引用和命名空间,就不...
老师  请教一下  这个全局加密和解密的函数代码  怎么进行使用呢?


--  作者:有点蓝
--  发布时间:2021/11/22 8:37:00
--  
直接调用:msgbox(AesEncrypt("加密的字符串"))

如果不是用来在网页前端加密,建议使用foxtable提供的加解密函数,不用搞那么多花样

--  作者:chen_sheng
--  发布时间:2021/11/23 16:08:00
--  
非常感谢杰哥 及蓝版的指导!