1
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
4

1 に答える 1

4

これはさらに単純です。キーはコンピューター名だけで、アルゴリズムはよく知られています。したがって、あなたのコンピュータ名を知ることができる人なら誰でも (これには、PC が侵害されていても、同じスイッチ上のすべての人が含まれます。メール システムによっては、メールを送信したすべての人が含まれます) 無制限に復号化できます。

PC がクラッシュし、新しいインストールに別の名前を付けた場合も、運が悪くなります。

編集

議論から:ハードコードされたキーを持つこと、逆コンパイラを持つこと、および秘密鍵を同時に持つことは不可能です。

あなたのアプローチ(コンピューターごとに異なるものを使用する)はまったく問題ありませんが、コンピューター名(またはMACアドレス...)のように簡単に読み取れないものに依存する必要があります。プロセッサーのシリアル番号または Windows の製品 ID が思い浮かびます。どちらもリモートで簡単に読み取ることはできませんが、誰かがこのマシンにアクセスするとゲームオーバーになることを覚えておいてください。

于 2012-05-24T03:59:11.227 に答える