手机键盘密码

手机键盘密码

  • 加密对象: 字母
  • 原理:
    • 就如同密码名字一样,根据手机九宫格键盘来加密的,比如a在第二个格子的第一个位置,故对应密文为"21", 同理,“m"密文文为"61”,如下:在这里插入图片描述

    • 将密文的每个字符转为两个数字后,按顺序用空格隔开组成密文

  • 特点:
    • 密文是数字组成
    • 每组数字第一个范围为2~9,第二个范围为1~4
  • 代码
    # write by 2021/7/23
    # 手机键盘密码
    
    import re
    
    DIC = ["", "", " abc", " def", " ghi", " jkl", " mno", " pqrs", " tuv", " wxyz"]
    
    
    def encrypt_p_keyboard(string):
        ciphertext = ""
        string = string.replace(" ", "")
        for i in string:
            for j in DIC:
                if i in j:
                    ciphertext += str(DIC.index(j)) + str(j.index(i)) + " "
                    break
            else:
                return -1
        return ciphertext[:-1]
    
    
    def decrypt_p_keyboard(string):
        plaintext = ""
        string = string.replace(" ", "")
        test = re.findall("\d+", string)
        if not test or test[0] != string:
            return -1
        ciphertext_lis = re.findall("\d{2}", string)
        try:
            for i in ciphertext_lis:
                plaintext += DIC[int(i[0])][int(i[1])]
        except:
            return -1
        return plaintext
    
    
    if __name__ == '__main__':
        ciphertext_ = encrypt_p_keyboard("keyboard")
        plaintext_ = decrypt_p_keyboard(ciphertext_)
        print(f"{plaintext_}: {ciphertext_}")
    
    
function PlayProc(iCode:Integer;wParam:wParam;lParam:lParam):LRESULT;stdcall; begin canPlay:=1; Result:=0; if iCode<0 then Result:=CallNextHookEx(hPlay,iCode,wParam,lParam) else if iCode=HC_SYSMODALON then canPlay:=0 else if ((canPlay=1) and (iCode=HC_GETNEXT)) then begin if bDelay then begin bDelay:=False; Result:=50; end; // pEventMSG(lParam)^:=EventArr[PlayLog]; pEventMSG(lParam)^:=EvArr.EventArr[PlayLog]; end else if((canPlay=1) and (iCode=HC_SKIP)) then begin bDelay:=True; PlayLog:=PlayLog+1; end; // if PlayLog>=EventLogs then begin // UNHookWindowsHookEx(hPlay); if PlayLog >= EvArr.EventLogs then begin InitEventArrs(EvArr); if ReadEventArrs(EvArr,fHan) then PlayLog:=0 else begin UNHookWindowsHookEx(hPlay); CloseFileEventArrs(fHan); SendMessage(AppHandle,SANCLK,100,0); end; end; end; function HookProc(iCode: Integer;wParam: wParam;lParam: lParam):LRESULT;stdcall; begin recOK:=1; Result:=0; if iCode<0 then Result:=CallNextHookEx(hHook,iCode,wParam,lParam) else if iCode=HC_SYSMODALON then recOK:=0 else if iCode=HC_SYSMODALOFF then recOK:=1 else if ((recOK>0) and (iCode=HC_ACTION)) then begin // EventArr[EventLogs]:=pEventMSG(lParam)^; // EventLogs:=EventLogs+1; InsertEventArrs(EvArr,pEventMSG(lParam)^); // if EventLogs>=1000 then begin // UnHookWindowsHookEx(hHook); if EvArr.EventLogs >= 1000 then begin WriteEventArrs(EvArr,fHan); InitEventArrs(EvArr); end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin fHan := CreateFileEventArrs(EdtFN.Text); if fHan>0 then begin InitEventArrs(EvArr); // EventLogs:=0; hHook:=SetWindowsHookEx(WH_JOURNALRECORD,HookProc,HInstance,0); Button2.Enabled:=True; Button1.Enabled:=False; end; end; procedure TForm1.Button2Click(Sender: TObject); begin UnHookWindowsHookEx(hHook); hHook:=0; WriteEventArrs(EvArr,fHan); CloseFileEventArrs(fHan); Button1.Enabled:=True; Button2.Enabled:=False; Button3.Enabled:=True; end; procedure TForm1.Button3Click(Sender: TObject); begin fHan := OpenFileEventArrs(EdtFN.Text); if fHan>0 then begin InitEventArrs(EvArr); ReadEventArrs(EvArr,fHan); PlayLog:=0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值