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
1 に答える
4
これはさらに単純です。キーはコンピューター名だけで、アルゴリズムはよく知られています。したがって、あなたのコンピュータ名を知ることができる人なら誰でも (これには、PC が侵害されていても、同じスイッチ上のすべての人が含まれます。メール システムによっては、メールを送信したすべての人が含まれます) 無制限に復号化できます。
PC がクラッシュし、新しいインストールに別の名前を付けた場合も、運が悪くなります。
編集
議論から:ハードコードされたキーを持つこと、逆コンパイラを持つこと、および秘密鍵を同時に持つことは不可能です。
あなたのアプローチ(コンピューターごとに異なるものを使用する)はまったく問題ありませんが、コンピューター名(またはMACアドレス...)のように簡単に読み取れないものに依存する必要があります。プロセッサーのシリアル番号または Windows の製品 ID が思い浮かびます。どちらもリモートで簡単に読み取ることはできませんが、誰かがこのマシンにアクセスするとゲームオーバーになることを覚えておいてください。
于 2012-05-24T03:59:11.227 に答える