Foxtable(狐表)用户栏目专家坐堂 → EncryptText加密后得到的数据,怎么在窗口中直接采用tables表组件得到解密后的数据呢?


  共有1996人关注过本帖树形打印复制链接

主题:EncryptText加密后得到的数据,怎么在窗口中直接采用tables表组件得到解密后的数据呢?

帅哥哟,离线,有人找我吗?
李孝春
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
EncryptText加密后得到的数据,怎么在窗口中直接采用tables表组件得到解密后的数据呢?  发帖心情 Post By:2019/3/20 15:32:00 [只看该作者]

EncryptText加密后得到的数据,怎么在窗口中直接采用tables表组件得到解密后的数据呢?

图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看
经过代码操作实现下图

代码如下:(代码有没有办法简化,实现对这个表的所有字段自动加密呢,而不是这样我一个个字段都单独写加密代码)
For i As Integer = 0 To Vals.Count - 1
                Dim dr As DataRow = DataTables("告知内容").AddNew()
                dr("信息时间") =Date.Now
                Dim Val1 As String=EncryptText(Vals(i),"a23","op#")
                dr("姓名") = Val1
                Dim Val2 As String=EncryptText(e.DataRow("信息内容"),"a23","op#")
                dr("信息内容")=Val2
                Dim Val3 As String=EncryptText("否","a23","op#")
                dr("是否告知")= Val3
                Dim Val4 As String=EncryptText(e.DataRow("发送对象"),"a23","op#")
                dr("发送对象")= Val4
                Dim Val5 As String=EncryptText(e.DataRow("发送人员"),"a23","op#")
                dr("发送人员")= Val5
                Dim Val6 As String=EncryptText(e.DataRow("发送平台"),"a23","op#")
                dr("发送平台")= Val6
                Dim Val7 As String=EncryptText(e.DataRow("信息类别"),"a23","op#")
                dr("信息类别")= Val7
                Dim Val8 As String=EncryptText(e.DataRow("拟发送时间"),"a23","op#")
                dr("拟发送时间")= e.DataRow("拟发送时间")
            Next

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

在窗口中直接采用 Normal tables表组件得到如图:(怎么实现解密呢?得到加密前的数据呢?)
备注:解密操作:Dim Val3 As String = DecryptText(Val2,"a23","op#"

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

[此贴子已经被作者于2019/3/20 15:48:11编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/20 15:56:00 [只看该作者]

做一个解密按钮

 

For Each dr As Row In Tables("表a").rows
    dr("某列") = DecryptText(dr("某列"),"a23","op#")
    dr("某列") = DecryptText(dr("某列"),"a23","op#")
    dr("某列") = DecryptText(dr("某列"),"a23","op#")
Next


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)做一个解密按钮?For Each d...  发帖心情 Post By:2019/3/20 17:07:00 [只看该作者]

'解密
Dim dt As DataTable=DataTables("告知内容")
For Each dr As DataRow In dt.DataRows
    For Each dtc As DataCol In dt.DataCols
      If dtc.name.Contains("时间") = False Then
        dr(dtc.name) = DecryptText(dr(dtc.name),"a23","op#")
     End If
    Next
Next
'加密
Dim dt As DataTable=DataTables("告知内容")
For Each dr As DataRow In dt.DataRows
    For Each dtc As DataCol In dt.DataCols
      If dtc.name.Contains("时间") = False Then
        dr(dtc.name) = EncryptText(dr(dtc.name),"a23","op#")
     End If
    Next
Next


上述代码基本实现了数据的加密与解密

[此贴子已经被作者于2019/3/20 17:23:20编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/20 17:14:00 [只看该作者]

加密

 

Dim t As Table = Tables("表A")
For Each r As Row In t.Rows
    For Each c As Col In t.Cols
        r(c.name) = EncryptText(r(c.name),"a23","op#")
    Next
Next

 

解密

 

Dim t As Table = Tables("表A")
For Each r As Row In t.Rows
    For Each c As Col In t.Cols
        r(c.name) = DecryptText(r(c.name),"a23","op#")
    Next
Next


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)加密 Dim t As Table = Tab...  发帖心情 Post By:2019/3/20 17:23:00 [只看该作者]

但是如果列中含有时间的话  那就会报错  时间列不能加密  有没有办法可以实现加密呢?
图片点击可在新窗口打开查看此主题相关图片如下:44.png
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/20 17:27:00 [只看该作者]

 

不可以,加密后,是字符串,无法保存在日期格式的列里面。

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
李孝春
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2472 积分:17346 威望:0 精华:0 注册:2013/1/31 0:03:00
回复:(有点甜)?不可以,加密后,是字符串,...  发帖心情 Post By:2019/3/20 19:12:00 [只看该作者]

好的  那只有取消日期列直接改用字符来进行了

在实际使用中会出现一个问题  那就是某个字段值为空的时候  不需要加密 也不需要解密
Dim dt3 As DataTable=DataTables("干警信息")
For Each dr3 As DataRow In dt3.DataRows
    For Each dtc3 As DataCol In dt3.DataCols
      If dtc3.name.Contains("时间") = False Then
        dr3(dtc3.name) = EncryptText(dr3(dtc3.name),"a23","op#")
     End If
    Next
Next
代码如上  

怎么实现判断  列值为空和有空行的情况时,不加密呢?

否则解密的时候就提示:Base-64 字符串中的无效字符。
比如当前干警信息表中   电子邮件  QQ号为空  等多个字段值为空及有空行的情况
[此贴子已经被作者于2019/3/20 19:28:51编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/3/20 21:57:00 [只看该作者]

Dim dt3 As DataTable=DataTables("干警信息")
For Each dr3 As DataRow In dt3.DataRows
    For Each dtc3 As DataCol In dt3.DataCols
        If dtc3.name.Contains("时间") = False Then
            If dr3.IsNull(dtc3.name) = False Then
                dr3(dtc3.name) = EncryptText(dr3(dtc3.name),"a23","op#")
            End If
        End If
    Next
Next

 回到顶部