アットウィキロゴ
「暗号化」の編集履歴(バックアップ)一覧に戻る

暗号化 - (2010/01/29 (金) 10:00:59) のソース

 #N88BASIC
 
 '[[データ]]を暗号化
 Function EnC(in As *Byte, out As *Byte, l As Long) As Long
   [[Dim]] Cind As Long
   out[0] = in[0]
   For Cind = 1 To l-1
     out[Cind] = in[Cind]-in[Cind-1]
   Next  
 
 [[End]] Function
 
 'データを複合化
 Function DeC(in As *Byte, out As *Byte, l As Long) As Long
   Dim Cind As Long
   out[0] = in[0]
   For Cind = 1 To l-1
     out[Cind] = in[Cind]+out[Cind-1]
   Next  
 End Function
 
 
 Function Show(in As *Byte, l As Long) As Long
   Dim Cind As Long
   Dim ele[45] As Byte
 
   For Cind = 0 To l-1
     wsprintf(ele, "%02x ", in[Cind])
     [[Print]]  [[MakeStr]](ele);
   Next
   Print ""
 End Function
 
 'testo
 Dim in[10] As Byte'元
 Dim out[10] As Byte'暗号
 Dim out2[10] As Byte'複合
 
 wsprintf(in, "阿部高和")
 Show(in, 10)
 
 EnC(in, out, 10)
 Show(out, 10)
 
 DeC(out, out2, 10)
 Show(out2, 10)

**別解
[[API]]にEncryptFile関数があり「[[ファイル]]またはディレクトリを暗号化します。」とある。解除はDecryptFile関数を使う。
これはファイル、フォルダのプロバティにある[属性]->[詳細設定]で暗号化するもの。
-win2000異常でないと使えない。
MSDNには&bold(){インポートライブラリ:kernel32.lib を使用}と書いてあるけど&bold(){ウソ}。Advapi32.libが正解。

 #N88BASIC
 [[Declare]] Function EncryptFile Lib"Advapi32" Alias "EncryptFileA" (lpFileName As *Byte) As Long
 Declare Function DecryptFile Lib"Advapi32" Alias "DecryptFileA" (lpFileName As *Byte,dwReserved As DWord) As Long
 Dim h As String
 Print EncryptFile("eeeee.txt")
 input h
 Print DecryptFile("eeeee.txt",0)