建一个string_substitution.xlsx,在sensitive_words字符串变量输入待加密词汇,空格间隔(图中为"a b c d e")
PS:数字8可以修改为其他数字,即由随机字符+数字组成的密文长度
import xlwings as xw
import string
import random
import pandas as pd
wb = xw.Book('./string_substitution.xlsx')
sht = wb.sheets['sheet1']
sensitive_words = '''
a b c d e
'''
sensitive_list = sensitive_words.split()
sensitive_list = list(set(sensitive_list))
sensitive = []
for word in sensitive_list:
ciphertext = ''.join(random.sample(
string.ascii_letters+string.digits, 8))
sensitive.append([word, ciphertext])
sht.range('a1').value = sensitive
得到密码本excel,第一列原文,第二列密文
在word2016-视图菜单-宏-查看宏,在宏名处新建两个宏,即加密和解密。
参考代码如下:
PS 密码本excel已经要用绝对路径!!!
加密VB代码参考:
Sub 加密()
'
' 加密 宏
'
'
Dim i, p
Dim MyXls As Object
Set MyXls = CreateObject("密码本Excel绝对路径")
p = 51
For i = 1 To p
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = MyXls.Sheets(1).Range("a" & i)
.Replacement.Text = MyXls.Sheets(1).Range("b" & i)
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next
MyXls.Close
Set MyXls = Nothing
End Sub
解密VB代码参考:
Sub 解密()
Dim i, p
Dim MyXls As Object
Set MyXls = CreateObject("密码本Excel绝对路径")
p = 51
For i = 1 To p
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = MyXls.Sheets(1).Range("b" & i)
.Replacement.Text = MyXls.Sheets(1).Range("a" & i)
.Forward = True
.Wrap = wdFindContinue
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next
MyXls.Close
Set MyXls = Nothing
End Sub
要操作的时候打开之前新建宏的宏管理面板,下拉双击加密或者解密,或者点击后再点右上方的运行即可。