基于python ttkbootstarp的密钥生成器

密钥生成器 密钥生成器! 阅读详情

App key和App Secret

App key简称API接口验证序号,是用于验证API接入合法性的。接入哪个网站的API接口,就需要这个网站允许才能够接入,如果简单比喻的话:可以理解成是登陆网站的用户名。

App Secret简称API接口密钥,是跟App Key配套使用的,可以简单理解成是密码。

App Key 和 App Secret 配合在一起,通过其他网站的协议要求,就可以接入API接口调用或使用API提供的各种功能和数据。

比如淘宝联盟的API接口,就是淘宝客网站开发的必要接入,淘客程序通过API接口直接对淘宝联盟的数据库调用近亿商品实时数据。做到了轻松维护,自动更新。

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
# pyinstaller --clean -w  -F -i favicon.ico app_gen.py -n 密钥生成器

import datetime
import hashlib
import os.path
import random
import ttkbootstrap as ttk
from ttkbootstrap.constants import *
from tkinter import filedialog as tkFileDialog
from ttkbootstrap.dialogs import Messagebox
import pyperclip
import base64
from icon import img

# 获取当前工作目录
path = os.getcwd()
# 默认文件名
filename = 'id_rsa.txt'

# 实例化创建应用程序窗口
root = ttk.Window(
    title="密钥生成器V1.0",  # 设置窗口的标题
    themename="litera",  # 设置主题
    minsize=(800, 400),  # 窗口的最小宽高
    maxsize=(1920, 1080),  # 窗口的最大宽高
    resizable=(True, True),  # 设置窗口是否可以更改大小
    alpha=1.0,  # 设置窗口的透明度(0.0完全透明)
)


def setIcon(root):
    tmp = open("tmp.ico", "wb+")
    tmp.write(base64.b64decode(img))  # 写入到临时文件中
    tmp.close()
    root.iconbitmap("tmp.ico")  # 设置图标
    os.remove("tmp.ico")


setIcon(root)

root.place_window_center()

root.wm_attributes('-topmost', 1)  # 让窗口位置其它窗口之上

ENTRY_WIDTH = 320
LABEL_LEFT_X = 160
ENTRY_LEFT_X = 280

# 在窗口上创建组件(AppId)
APP_ID_Y = 60
labeName = ttk.Label(root, text='AppId:', font=("微软雅黑", 16), bootstyle=INFO)
labeName.place(x=LABEL_LEFT_X, y=APP_ID_Y, width=125, height=40)
varId = ttk.StringVar(root, value='')
entryName = ttk.Entry(root, width=200, textvariable=varId, bootstyle=INFO)
entryName.place(x=ENTRY_LEFT_X, y=APP_ID_Y, width=ENTRY_WIDTH, height=40)


def callback1(event=None):
    if(varId.get() != ''):
        pyperclip.copy(varId.get())
        Messagebox.show_info(title='温馨提示', message='复制成功!')


buttonCopy1 = ttk.Button(
    root, text='复制', bootstyle=(PRIMARY, "outline-toolbutton"), command=callback1)
buttonCopy1.place(x=ENTRY_LEFT_X+ENTRY_WIDTH+20,
                  y=APP_ID_Y, width=60, height=40)


# 在窗口上创建组件(AppKey)
APP_KEY_Y = 120
labeName = ttk.Label(root, text='AppKey:', bootstyle=INFO, font=("微软雅黑", 16))
labeName.place(x=LABEL_LEFT_X, y=APP_KEY_Y, width=125, height=40)
varKey = ttk.StringVar(root, value='')
entryPwd = ttk.Entry(root, width=120, textvariable=varKey)
entryPwd.place(x=ENTRY_LEFT_X, y=APP_KEY_Y, width=ENTRY_WIDTH, height=40)


def callback2(event=None):
    if(varKey.get() != ''):
        pyperclip.copy(varKey.get())
        Messagebox.show_info(title='温馨提示', message='复制成功!')


buttonCopy1 = ttk.Button(
    root, text='复制', bootstyle=(PRIMARY, "outline-toolbutton"), command=callback2)
buttonCopy1.place(x=ENTRY_LEFT_X+ENTRY_WIDTH+20,
                  y=APP_KEY_Y, width=60, height=40)


# 在窗口上创建组件(AppSecret)
APP_SECRET_Y = 180
labeName = ttk.Label(root, text='AppSecret:',
                     bootstyle=INFO, font=("微软雅黑", 16))
labeName.place(x=LABEL_LEFT_X, y=APP_SECRET_Y, width=125, height=40)
varSecret = ttk.StringVar(root, value='')
entrySecret = ttk.Entry(root, width=120, textvariable=varSecret)
entrySecret.place(x=ENTRY_LEFT_X, y=APP_SECRET_Y, width=ENTRY_WIDTH, height=40)


def callback3(event=None):
    if(varSecret.get() != ''):
        pyperclip.copy(varSecret.get())
        Messagebox.show_info(title='温馨提示', message='复制成功!')


buttonCopy1 = ttk.Button(
    root, text='复制', bootstyle=(PRIMARY, "outline-toolbutton"), command=callback3)
buttonCopy1.place(x=ENTRY_LEFT_X+ENTRY_WIDTH+20,
                  y=APP_SECRET_Y, width=60, height=40)

OPENID_PREFIX = "sddf"


def create_app_id() -> str:
    """
           生成开放接口openId,使用sddf作为统一前缀
           :return: 返回值名: 返回值说明
        """
    now = datetime.datetime.now().timestamp()
    app_id = hashlib.md5(str(now).encode('utf-8'))
    return OPENID_PREFIX + app_id.hexdigest()[4:]


def create_app_key(module='', length=8) -> str:
    """
       函数说明
       :param module: 模块名称,用作生成app_key的"盐值"
       :param length: 模块名称,用作生成app_key的长度,默认8位
       :return: app_key: 业务key
    """
    source_letters = module + \
        "abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    str_list = [random.choice(source_letters) for i in range(length)]
    app_key = ''.join(str_list)
    return app_key


def create_app_secret(salt: str, length=40) -> str:
    """
          函数说明
          :param salt: 模块名称,用作生成app_key的"盐值"
          :param length: 模块名称,用作生成app_key的长度,默认8位
          :return: app_secret: 密钥
       """
    source_letters = salt + "abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    str_list = [random.choice(source_letters) for i in range(length)]
    app_secret = ''.join(str_list)
    return app_secret


# 生成按钮事件处理函数
def gen():
    varId.set(create_app_id())
    varKey.set(create_app_key())
    varSecret.set(create_app_secret(create_app_id()))


BUTTON_FUN_Y = 260
BUTTON_FUN_H = 30
# 创建按钮组件,同时设置按钮事件处理函数
# 参数解释:  text='生成'文本内容      activeforeground='#ff0000'按下按钮时文字颜色     command=login关联的函数
buttonOk = ttk.Button(
    root, text='生成', bootstyle=SUCCESS, command=gen)
buttonOk.place(x=270, y=BUTTON_FUN_Y, width=80, height=BUTTON_FUN_H)

# 创建保存组件,同时设置按钮事件处理函数
file_opt = options = {}
options['defaultextension'] = '.txt'
options['filetypes'] = [('all files', '.*'), ('text files', '.txt')]
options['initialdir'] = path
options['initialfile'] = filename
options['parent'] = root
options['title'] = '请选择保存路径'


def saveToFile():
    """Returns an opened file in write mode.
    This time the dialog just returns a filename and the file is opened by your own code.
    """
    if varId.get() == '' or varKey.get() == '' or varSecret.get() == '':
        Messagebox.show_error(message='请生成密钥')
        return
    # get filename
    filename = tkFileDialog.asksaveasfilename(**file_opt)

    # open file on your own
    if filename:
        app_id = "AppId: " + varId.get()
        app_key = "AppKey: " + varKey.get()
        app_secret = "AppSecret: " + varSecret.get()
        list = [app_id, app_key, app_secret]
        with open(filename, "w", encoding="utf-8") as fw:  # 可以写入txt文件
            for i in list:
                fw.write(i + "\n")
        Messagebox.show_info(message='写入成功!')


buttonSave = ttk.Button(
    root, text='保存', bootstyle=SUCCESS, command=saveToFile)
buttonSave.place(x=420, y=BUTTON_FUN_Y, width=80, height=BUTTON_FUN_H)


# 清空按钮的事件处理函数


def clear():
    # 清空生成的数据
    varId.set('')
    varKey.set('')
    varSecret.set('')


buttonClear = ttk.Button(root, text='清空', bootstyle=SUCCESS, command=clear)
buttonClear.place(x=550, y=BUTTON_FUN_Y, width=80, height=BUTTON_FUN_H)

root.mainloop()

打包icon文件需要用到的工具类:

# 这段程序可将图标gen.ico转换成icon.py文件里的base64数据
import base64
open_icon = open("favicon.ico", "rb")  # favicon.icon为你要放入的图标
b64str = base64.b64encode(open_icon.read())  # 以base64的格式读出
open_icon.close()
write_data = "img=%s" % b64str
f = open("icon.py", "w+")  # 将上面读出的数据写入到icon.py的img数组中
f.write(write_data)
f.close()

效果如下:

DES加密和解密工具(亲测可用) 可以指定不同的密钥进行加密操作,增强加密性能。加密和解密代码如下: package com.ywx.test.security; import java.security.Key; import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; /** * DES加密和解密工具,可以对字符串进行加密和解密操作. */ public class Test1 { /** 字符串默认键值 */ privat... 阅读详情

相关推荐

Powershell 7.x中UTF-8环境中文乱码解决办法

Powershell7 中文乱码问题解决

shadow_zed的博客 8417

outline使用

outline

随手写下笔记和感悟 7万+

Outline-Client.rar

Outline-Client.ext是一款比较好用的网络代理客户端软件,配套的有服务器软件,建议配套一起使用

Windows 10 密钥分享

Windows 10 Technical Preview for Enterprise:   KEY:PBHCJ-Q2NYD-2PX34-T2TD6-233PK   http://technet.microsoft.com/zh-CN/evalcenter/dn781239.aspx   Windows 10 Technical Preview:   KEY:NKJFK-GPHP7-G8C

3万+

万能破解资源

这是本人收藏了多年的序列号、注册码、密钥。能轻松破解我们学习,生活中许多软件。让大家免费使用。以前该资源我是不分享的,现在分享给大家。所以下载需要一定的资源分,下载后请大家好好珍惜。

api-key-generator:使用 Python 的简单 API 密钥生成器

api-key-生成器 使用 Python 的简单 API 密钥生成器 开发环境 操作系统:Windows 8.1 64 位 工具: Python 2.7.9 MongoDB 3.0.2(从下载 64 位安装程序) pymongo ( pip install pymongo ) 参数解析 吉特 用法 您可以将此应用程序用作模块和命令行实用程序。 作为模块 import api_key_gen apikey = api_key_gen . APIKeyGenerator () key = apikey . generate () print key 作为命令行实用程序 运行以下命令寻求帮助 $ python api_key_gen.py -h or --help 创建池: $ python api_key_gen.py -s 100 -s 池大小,默认为 10

谷歌地球下载 Outline密钥生成 问题备忘录

谷歌地球下载及使用总是指引,Outline使用问题

yezichen2的专栏 1万+

outline-bots

OutlineBot 先决条件 电报机器人和电子邮件响应者之间的共同点: 您应该在云提供商中拥有一个具有足够权限的用户来创建所需的资源 在Outline Distribution服务器中创建的用户和密码(API密钥/令牌) 用户应具有以下权限 发行应用: OutlineUser:查看,添加 VPN用户:查看,更改,添加,删除 问题:查看 服务器应用程序: OutlineServer:视图 基于Unix的系统 需要二进制(命令)envsubst。 安装相关的软件包。 Ubuntu示例: apt-get更新 apt-get install gettext-base 云中所需的资源: 提供repo中的脚本aws/aws_resources_setup.sh作为示例。 可用于在Amazon Cloud中设置资源 资源: 无服务器功能运行所需的角色或权限 无服务器功能 电报机器人: 在

outline

定义和用法 outline (轮廓)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。 注释:轮廓线不会占据空间,也不一定是矩形。 outline 简写属性在一个声明中设置所有的轮廓属性。 可以按顺序设置如下属性: outline-color outline-style outline-width<!DOCTYPE html PUBLIC "-//W3C//DTD X

一心一意码代码 1万+

操作系统课程项目 OS project —— Pintos from Project 1 to Project 3

Pintos Project 陪伴我们操作系统课程大半个学期了…… 虽然做了这么长时间,个人能力有限,pintos代码,看过的可能也就看懂了一半吧,更不用说没看过的了…… 但是也找到了一些有价值的资料,整理一下,供后辈们参考…… 关于环境的问题,最好是用ubuntu 16.04 windows用户不要折腾装双系统了,特别是win10,动不动更新一下,说不定双系统就出问题了,linux...

Deserted Land 8553

AI Agent技术架构与规模化应用:2025年技术深度解析

2025年,AI Agent(人工智能智能体)迎来了规模化应用的拐点时刻。根据Gartner等权威机构预测,企业软件中整合自主型AI的比例将从2024年的不足1%跃升至2028年的33%。本文深入剖析AI Agent的核心技术架构,从规划模块、记忆模块、工具调用模块到底层实现原理,结合Python和Go语言的实际代码示例,全面阐述AI Agent的技术实现路径。同时,本文探讨多智能体协作系统、企业级部署架构以及未来的技术演进方向,为开发者和技术决策者提供系统性的技术参考。关键词:AI Agent、大语言模型

shao.bing的专栏 1348

MarkDown Pad2 输入密钥,免费分享

由博主 guo_wen_qiang 分享 https://blog.youkuaiyun.com/guo13313/article/details/66082507   问题描述 Windows 10系统,安装 MarkdownPad 2,打开markdown并书写相关内容时遇到了html 渲染错误(缺少component),右侧视图直接显示 “This view has crashed”的问题...

nbxzkok的专栏 6473

相衬成像介绍

相衬成像介绍

qq_41981768的博客 2910

outline创建使用

--outline现在已经被sql profile替代,但还是学习下 -- 准备工作 : 赋权限:grant create any outline to aiki; SQL> show parameter stored NAME                                 TYPE        VALUE ---------------------------

N 2431

从零开始:用ZEMAX设计双高斯照相物镜的完整流程(附55mm焦距实例)

本文详细介绍了使用ZEMAX设计双高斯照相物镜的完整流程,特别针对55mm焦距实例进行了深入解析。从初始结构选择、参数设置到优化策略和像质分析,逐步指导读者掌握这一经典光学设计方法。通过具体实例展示了如何实现卓越的像差校正,适用于35mm相机标准镜头等应用场景。

onion的博客 703

Bellhop水声信道模型的仿真

Bellhop是一种基于射线追踪的水声信道模型,广泛用于预测水下环境中的声压场。它通过模拟声波在水中的传播路径,计算声场分布,适用于复杂的水下通信场景。

yt94832的博客 1306

生成微信API v3密钥

微信生成APIV3秘钥

sinat_36891648的博客 3303

AI快速变现之路,AI视频创作

初期投入$3000(工具订阅+样片制作),重点攻克跨境电商和本地生活服务市场。关注2025年AIGC视频工具的API降价趋势(如Pika企业版折扣可达50%),建议与云服务商签订长期合作协议。

qq_29896351的博客 1980

Outline使用Authelia实现本地认证

通过 Authelia 的 OIDC 协议,让 Outline 实现本地化认证。

wbsu2004的博客 6365

药物吸收仿真软件:Caco-2_(9).Caco-2模型在药物开发中的案例分析

通过以上五个案例,我们可以看到Caco-2模型在药物开发中的重要作用。它不仅能够帮助我们预测药物的肠道吸收情况,还能够用于优化药物配方、评估代谢稳定性、研究药物相互作用以及转运蛋白的影响。这些体外实验和仿真分析的结果为药物的进一步临床研究提供了重要的参考依据,有助于缩短药物开发周期,提高研发效率。

kkchenjj的博客 863

Python 爬虫实战:爬取今日头条文章与阅读量数据

本文详细介绍了基于Python爬取今日头条文章与阅读量数据的完整方案。通过分析今日头条API接口,采用Requests+正则表达式技术实现数据抓取,重点解决加密参数构造、请求头模拟、反爬规避等核心问题。文章包含文章列表获取、详情数据提取、互动数据采集等完整流程,并提供数据存储与基础分析方法。同时强调合规使用爬虫技术,控制爬取频率,避免干扰平台运营。该方案可为内容传播分析、用户兴趣研究提供数据支持,但需注意接口参数更新和反爬机制变化,适时调整代码实现。

2503_91057718的博客 2519

python:secrets --- 生成管理密码的安全随机数

python:secrets --- 生成管理密码的安全随机数

FuncPlotCalc 1360

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

python 文本框关联_python之UI编程(ttk)——控件之间关联(一个文本框的数值变化,引起另一个文本框变化)...

目标:在Python的UI编程环境中,实现控件之间的关联。本例中窗口中有三个文本框,其中v1和v2是输入,第三个文本框的值等于v1和v2之和。编程环境:win10、Python3.7.6说明:1. 为主类设置三个StringVar类型的属性 v1、v2和v3。v1和v2是输入,v3是输出。v3 = v1 + v22. 对v1和v2设置事件跟踪,回调函数为changeValue,代码:v1.trac...

weixin_35544017的博客 700

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

产品密钥生成器

可以用别人已经写好的现成的开源免费包. String guid=com.opensymphony.util.GUID.generateFormattedGUID(); 参考 http://www.opensymphony.com/oscore/api/com/opensymphony/util/GUID.html http://www.opensymphony.com/oscore/ for

Java技术 2426

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 程序落地部署——python库打包分发
下一篇: Idea-Git与命令行操作合并多次commit为一个/合并提交--图解
shadow_zed
博客等级 码龄10年 6289粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值