PythonDes加密解密怎樣實(shí)現(xiàn)軟件注冊(cè)碼機(jī)器碼-創(chuàng)新互聯(lián)

這篇文章將為大家詳細(xì)講解有關(guān)Python Des加密解密怎樣實(shí)現(xiàn)軟件注冊(cè)碼機(jī)器碼,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

成都創(chuàng)新互聯(lián)作為成都網(wǎng)站建設(shè)公司,專(zhuān)注重慶網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),有關(guān)成都企業(yè)網(wǎng)站建設(shè)方案、改版、費(fèi)用等問(wèn)題,行業(yè)涉及成都混凝土攪拌站等多個(gè)領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶(hù)的尊重與認(rèn)可。

原理

  • 判斷路徑下是否存在識(shí)別文件,若存在就解密對(duì)比,若不存在就進(jìn)入機(jī)器碼注冊(cè):

  • 獲取系統(tǒng)C盤(pán)序列號(hào)作為識(shí)別ID,并添加隨機(jī)數(shù)作為混淆,生成最終機(jī)器碼。

  • 將機(jī)器碼發(fā)給軟件開(kāi)發(fā)者,開(kāi)發(fā)者將機(jī)器碼解密后,添加自己的標(biāo)識(shí)符號(hào)并加密生成key,發(fā)給用戶(hù)。

  • 用戶(hù)輸入key,程序?qū)Ρ炔⒈4妗?/p>

  • 用戶(hù)下次打開(kāi)軟件時(shí),重新開(kāi)始步驟‘1'。

說(shuō)明

  • 加密:將序列號(hào)經(jīng)過(guò)Des加密,再經(jīng)過(guò)base64編碼。

  • 解密:將密碼經(jīng)過(guò)base64解碼,再經(jīng)過(guò)Des解密。

  • 寫(xiě)文件:將二進(jìn)制字符轉(zhuǎn)為十六進(jìn)制保存。

  • 讀文件:將十六進(jìn)制轉(zhuǎn)為二進(jìn)制。

代碼

# coding: utf-8
 
import win32api
import pyDes
from binascii import b2a_hex, a2b_hex
import base64
import os
def getCVolumeSerialNumber():
  CVolumeSerialNumber=win32api.GetVolumeInformation("C:\\")[1]
  # print(CVolumeSerialNumber)
  if CVolumeSerialNumber:
    return str(CVolumeSerialNumber)
  else:
    return 0
 
def DesEncrypt(str):
  k = pyDes.des(Des_Key, pyDes.CBC, Des_IV, pad=None, padmode=pyDes.PAD_PKCS5)
  encryptStr = k.encrypt(str)
  string = base64.b64encode(encryptStr)
  # print(string)
  return string # 轉(zhuǎn)base64編碼返回
 
def DesDecrypt(string):
  string = base64.b64decode(string)
  k = pyDes.des(Des_Key, pyDes.CBC, Des_IV, pad=None, padmode=pyDes.PAD_PKCS5)
  decryptStr = k.decrypt(string)
  # print(decryptStr)
  return decryptStr
 
Des_Key = "12345678" # Key
Des_IV = "12345678" # 自定IV向量
def Register():
  if os.path.isfile('conf.bin'):
    with open('conf.bin', 'rb') as fp:
      key = a2b_hex(fp.read())
      print(key)
    serialnumber = getCVolumeSerialNumber()
    decryptstr = DesDecrypt(key).decode('utf8')
    print(decryptstr)
    if serialnumber in decryptstr:
      if 'Buy' in decryptstr:
        print('>> Buy')
        print(">> 驗(yàn)證完成")
        return 1
      elif 'Trial' in decryptstr:
        print('>> Trial')
        return 2
  rand = str(random.randrange(1, 1000))
  serialnumber = getCVolumeSerialNumber() + rand
  print(serialnumber)
  encryptstr = DesEncrypt(serialnumber).decode('utf8')
  print(">> 序列號(hào):", encryptstr)
  while True:
    key = input(">> 驗(yàn)證碼:")
    try:
      decryptstr = DesDecrypt(key.encode('utf8')).decode('utf8')
      print(decryptstr)
      if serialnumber in decryptstr:
        if 'Buy' in decryptstr:
          print('>> Buy')
          with open('conf.bin', 'wb') as fp:
            fp.write(b2a_hex(key.encode('utf8')))
            print(">> 驗(yàn)證完成")
          return 1
        elif 'Trial' in decryptstr:
          print('>> Trial')
          return 2
    except Exception as e:
      print(e)
      print(">> 輸入錯(cuò)誤")
      continue

效果

Python Des加密解密怎樣實(shí)現(xiàn)軟件注冊(cè)碼機(jī)器碼

Python Des加密解密怎樣實(shí)現(xiàn)軟件注冊(cè)碼機(jī)器碼

關(guān)于“Python Des加密解密怎樣實(shí)現(xiàn)軟件注冊(cè)碼機(jī)器碼”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。

當(dāng)前題目:PythonDes加密解密怎樣實(shí)現(xiàn)軟件注冊(cè)碼機(jī)器碼-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)源:http://muchs.cn/article40/eeeho.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)品牌網(wǎng)站設(shè)計(jì)、服務(wù)器托管、網(wǎng)站建設(shè)、Google、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)