Option Explicit
Dim sSecretData
sSecretData = "Here is some very secret data."
' Build up the key
Dim wshNetwork, sComputerName
Set wshNetwork = WScript.CreateObject("WScript.Network")
sComputerName = wshNetwork.ComputerName
Dim capEData
Set capEData = CreateObject("CAPICOM.EncryptedData")
capEData.Algorithm = 3 'Use 3DES
capEData.SetSecret sComputerName
capEData.Content = sSecretData
Dim sCipherText
sCipherText = capEData.Encrypt
capEData.Algorithm = 3
capEData.SetSecret sComputerName
capEData.Decrypt sCipherText
Dim sPlainText
sPlainText = capEData.Content
MsgBox "Original data: " & sSecretData & chr(13) _
& "Encrypted data: " & sCipherText & chr(13) _
& "Recoverd data: " & sPlainText
问问题
320 次
1 回答
4
这个更简单:关键就是计算机名,算法是众所周知的。因此,可以找到您的计算机名称的每个人(这包括同一交换机上的每个人,即使他的 PC 被入侵,并且取决于您的邮件系统,您曾经发送过邮件的每个人)都可以无限制地解密。
如果您的 PC 崩溃了,并且您为新安装的设备指定了不同的名称,那么您也将不走运。
编辑
正如讨论:拥有硬编码密钥,拥有反编译器和同时拥有密钥是不可能的。
您的方法(使用因计算机而异的东西)非常好,但是您应该依赖一些不能像计算机名称(或 MAC 地址...)那样容易被读取的东西。想到处理器序列号或 Windows 产品 ID - 两者都不容易远程读取,但请记住,如果有人可以访问这台机器,游戏就结束了!
于 2012-05-24T03:59:11.227 回答