goo

暗号 (Advapi32.dll)

暗号のメモ
単純なスクリプトなので詳細は省略。


/* --------------------------------------------------------------------------
	Crypt : Module
   -------------------------------------------------------------------------- */
#module Crypt
  #define global PROV_RSA_FULL		1
  #define global MS_ENHANCED_PROV	"Microsoft Enhanced Cryptographic Provider v1.0"
  #define global CALG_MD5		0x00008003
  #define global CALG_RC4		0x00006801

  #uselib "Advapi32.dll"
    #cfunc CryptAcquireContext	"CryptAcquireContextA"	var,int,str,int,int
    #func  CryptReleaseContext	"CryptReleaseContext"	int,int
    #cfunc CryptCreateHash	"CryptCreateHash"	int,int,int,int,var
    #cfunc CryptHashData	"CryptHashData"		int,var,int,int
    #func  CryptDestroyHash	"CryptDestroyHash"	int
    #cfunc CryptDeriveKey	"CryptDeriveKey"	int,int,int,int,var
    #func  CryptDestroyKey	"CryptDestroyKey"	int
    #cfunc CryptEncrypt		"CryptEncrypt"		int,int,int,int,var,var,int
    #cfunc CryptDecrypt		"CryptDecrypt"		int,int,int,int,var,var

  #uselib "Crypt32.dll" // Requires Windows Vista or Windows XP.
    #cfunc CryptBinaryToStringZ	"CryptBinaryToStringA"	var,int,int,int,var
    #cfunc CryptBinaryToString	"CryptBinaryToStringA"	var,int,int,var,var

  #deffunc CryptDestroy
    CryptDestroyKey hKey	: hKey  = 0
    CryptDestroyHash hHash	: hHash = 0
    CryptReleaseContext hProv,0	: hProv = 0
  return

  #defcfunc GetKey_ var pw,int pType,int hALG,int pALG,int keyGen
    if( (hProv != 0) || (hHash != 0) || (hKey != 0) ) : CryptDestroy
    if( CryptAcquireContext(hProv,0,MS_ENHANCED_PROV,pType,0) ){
      if( CryptCreateHash(hProv,hALG,0,0,hHash) ){
        if( CryptHashData(hHash,pw,strlen(pw),0) ){
          if( CryptDeriveKey(hProv,pALG,hHash,keyGen,hKey) ){
            return hKey
          }
        }
      }
    }
  return 0

  #defcfunc Encrypt_ int pType,int hALG,int pALG,var buf,var pw,int len,int keyGen
    ret = 0 : dwByte = len
    hKey = GetKey_(pw,pType,hALG,pALG,keyGen)
    if( hKey ){
      ret = CryptEncrypt(hKey,0,1,0,buf,dwByte,dwByte)
      if( ret ) : ret = dwByte
    }
    CryptDestroy
  return ret

  #defcfunc Decrypt_ int pType,int hALG,int pALG,var buf,var pw,int len,int keyGen
    ret = 0 : dwByte = len
    hKey = GetKey_(pw,pType,hALG,pALG,keyGen)
    if( hKey ){
      ret = CryptDecrypt(hKey,0,1,0,buf,dwByte)
      if( ret ) : ret = dwByte
    }
    CryptDestroy
  return ret

  #defcfunc GetKeys var pw
  return GetKey_(pw,PROV_RSA_FULL,CALG_MD5,CALG_RC4,0x800000)

  #defcfunc Encrypt var buf,var pw,int len
  return Encrypt_(PROV_RSA_FULL,CALG_MD5,CALG_RC4,buf,pw,len)

  #defcfunc Decrypt var buf,var pw,int len
  return Decrypt_(PROV_RSA_FULL,CALG_MD5,CALG_RC4,buf,pw,len)

  #defcfunc EncryptKey var buf,int key,int len
    dwByte = len
    if( CryptEncrypt(key,0,1,0,buf,dwByte,dwByte) ) : return dwByte
  return 0

  #defcfunc DecryptKey var buf,int key,int len
    dwByte = len
    if( CryptDecrypt(key,0,1,0,buf,dwByte) ) : return dwByte
  return 0

  #defcfunc GetBinToStr var pStr,var pBin,int len
    dwByte = 0
    if( CryptBinaryToStringZ(pBin,len,11,0,dwByte) ){
      sdim pStr,dwByte+1
      if( CryptBinaryToString(pBin,len,11,pStr,dwByte) ){
        return 1
      }
    }
  return 0
#global
/* --------------------------------------------------------------------------
	end of Crypt
   -------------------------------------------------------------------------- */

#define SCR0_X		500
#define SCR0_Y		500

*main
  sdim mb,10000 : sdim ip,260 : sdim btn,16,2
  bCrypt = 0 : bBin = 0
  screen 0,SCR0_X,SCR0_Y
  objmode 2 : font "MS ゴシック", 12
  objsize SCR0_X / 2,20
  btn(0)="暗号化","復号化"
  pos  0, 0 : button gosub btn(0), *crypt
  pos SCR0_X/2,0 : button gosub "表示変更", *bin
  pos 10,24 : mes "PASSWORD"
  pos 80,20 : input ip,SCR0_X - 80,20
  pos  0,40 : mesbox mb,SCR0_X,SCR0_Y-40
stop

*mbchg
  if(bBin){
    if(bCrypt == 0) : len = strlen(mb)
    if( GetBinToStr(s,mb,len) ) : objprm 3,s
  }
  else{
    objprm 3,mb
  }
return

*crypt
  if(bCrypt){
    ret = Decrypt(mb,ip,len)
    if(ret) : objprm 3,mb
  }
  else{
    len = strlen(mb)
    ret = Encrypt(mb,ip,len)
  }
  if( ret ){
    bCrypt ^= 1 : objprm 0,btn(bCrypt)
    gosub *mbchg
  }
return ret

*bin
  bBin ^= 1
  gosub *mbchg
return
コメント ( 9 ) | Trackback ( 0 )
« MSDN VS 2008 次の記事へ »
 
コメント
 
 
 
Unknown (あき)
2007-12-28 23:42:10
http://www.couponsan.com/dl/live/
 
 
 
Re:タイトル何か書いてくれぃ (hiro)
2007-12-29 00:25:03
ありがと あき
 
 
 
初めまして (アマグラマー)
2007-12-29 18:53:52
どうも、初めましてアマグラマーと申します。

スクリプトを求めてサイトを彷徨っていて、ここに辿り着いたのですが、
参考になるスクリプトがありすぎて(^^;
これからお世話になると思うので、ご挨拶しようと思い
コメントしました。

では、失礼します。また来ます(^^;;
 
 
 
Re:初めまして (hiro)
2007-12-31 02:04:00
アマグラマーさん、はじめまして。
コメントありがとうございます。
間違いがあるかもしれませんが、参考になりましたら幸いです。
 
 
 
??? (name)
2019-05-16 19:14:25
凄い!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
 
 
Unknown (Unknown)
2019-05-16 19:17:05
AS(D)#((D(D(D(D((((!")")")")D)D))F)FJFJFJFJ)S))S)S)
DDD)D)F)C((C(C((C(()R))R)R)R)R)R)R))R)R)(C((C((C(
 
 
 
 ()
2019-05-16 19:18:07
ぢド青地ぢぢ
 
 
 
")"")SSSS (Unkonwn)
2019-05-16 19:19:14
磯どふぃふぃふぉおっふぉ
 
 
 
Unknown (UNKONWIS)
2019-05-16 19:25:26
/* --------------------------------------------------------------------------
Crypt : Module
-------------------------------------------------------------------------- */
#module Crypt
#define global PROV_RSA_FULL 1
#define global MS_ENHANCED_PROV "Microsoft Enhanced Cryptographic Provider v1.0"
#define global CALG_MD5 0x00008003
#define global CALG_RC4 0x00006801

#uselib "Advapi32.dll"
#cfunc CryptAcquireContext "CryptAcquireContextA" var,int,str,int,int
#func CryptReleaseContext "CryptReleaseContext" int,int
#cfunc CryptCreateHash "CryptCreateHash" int,int,int,int,var
#cfunc CryptHashData "CryptHashData" int,var,int,int
#func CryptDestroyHash "CryptDestroyHash" int
#cfunc CryptDeriveKey "CryptDeriveKey" int,int,int,int,var
#func CryptDestroyKey "CryptDestroyKey" int
#cfunc CryptEncrypt "CryptEncrypt" int,int,int,int,var,var,int
#cfunc CryptDecrypt "CryptDecrypt" int,int,int,int,var,var

#uselib "Crypt32.dll" // Requires Windows Vista or Windows XP.
#cfunc CryptBinaryToStringZ "CryptBinaryToStringA" var,int,int,int,var
#cfunc CryptBinaryToString "CryptBinaryToStringA" var,int,int,var,var

#deffunc CryptDestroy
CryptDestroyKey hKey : hKey = 0
CryptDestroyHash hHash : hHash = 0
CryptReleaseContext hProv,0 : hProv = 0
return

#defcfunc GetKey_ var pw,int pType,int hALG,int pALG,int keyGen
if( (hProv != 0) || (hHash != 0) || (hKey != 0) ) : CryptDestroy
if( CryptAcquireContext(hProv,0,MS_ENHANCED_PROV,pType,0) ){
if( CryptCreateHash(hProv,hALG,0,0,hHash) ){
if( CryptHashData(hHash,pw,strlen(pw),0) ){
if( CryptDeriveKey(hProv,pALG,hHash,keyGen,hKey) ){
return hKey
}
}
}
}
return 0

#defcfunc Encrypt_ int pType,int hALG,int pALG,var buf,var pw,int len,int keyGen
ret = 0 : dwByte = len
hKey = GetKey_(pw,pType,hALG,pALG,keyGen)
if( hKey ){
ret = CryptEncrypt(hKey,0,1,0,buf,dwByte,dwByte)
if( ret ) : ret = dwByte
}
CryptDestroy
return ret

#defcfunc Decrypt_ int pType,int hALG,int pALG,var buf,var pw,int len,int keyGen
ret = 0 : dwByte = len
hKey = GetKey_(pw,pType,hALG,pALG,keyGen)
if( hKey ){
ret = CryptDecrypt(hKey,0,1,0,buf,dwByte)
if( ret ) : ret = dwByte
}
CryptDestroy
return ret

#defcfunc GetKeys var pw
return GetKey_(pw,PROV_RSA_FULL,CALG_MD5,CALG_RC4,0x800000)

#defcfunc Encrypt var buf,var pw,int len
return Encrypt_(PROV_RSA_FULL,CALG_MD5,CALG_RC4,buf,pw,len)

#defcfunc Decrypt var buf,var pw,int len
return Decrypt_(PROV_RSA_FULL,CALG_MD5,CALG_RC4,buf,pw,len)

#defcfunc EncryptKey var buf,int key,int len
dwByte = len
if( CryptEncrypt(key,0,1,0,buf,dwByte,dwByte) ) : return dwByte
return 0

#defcfunc DecryptKey var buf,int key,int len
dwByte = len
if( CryptDecrypt(key,0,1,0,buf,dwByte) ) : return dwByte
return 0

#defcfunc GetBinToStr var pStr,var pBin,int len
dwByte = 0
if( CryptBinaryToStringZ(pBin,len,11,0,dwByte) ){
sdim pStr,dwByte+1
if( CryptBinaryToString(pBin,len,11,pStr,dwByte) ){
return 1
}
}
return 0
#global
/* --------------------------------------------------------------------------
end of Crypt
-------------------------------------------------------------------------- */

#define SCR0_X 500
#define SCR0_Y 500

*main
sdim mb,10000 : sdim ip,260 : sdim btn,16,2
bCrypt = 0 : bBin = 0
screen 0,SCR0_X,SCR0_Y
objmode 2 : font "MS ゴシック", 12
objsize SCR0_X / 2,20
btn(0)="暗号化","復号化"
pos 0, 0 : button gosub btn(0), *crypt
pos SCR0_X/2,0 : button gosub "表示変更", *bin
pos 10,24 : mes "PASSWORD"
pos 80,20 : input ip,SCR0_X - 80,20
pos 0,40 : mesbox mb,SCR0_X,SCR0_Y-40
stop

*mbchg
if(bBin){
if(bCrypt == 0) : len = strlen(mb)
if( GetBinToStr(s,mb,len) ) : objprm 3,s
}
else{
objprm 3,mb
}
return

*crypt
if(bCrypt){
ret = Decrypt(mb,ip,len)
if(ret) : objprm 3,mb
}
else{
len = strlen(mb)
ret = Encrypt(mb,ip,len)
}
if( ret ){
bCrypt ^= 1 : objprm 0,btn(bCrypt)
gosub *mbchg
}
return ret

*bin
bBin ^= 1
gosub *mbchg
return
 
コメントを投稿する
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。