<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>工具 on 我的博客</title><link>https://blog.xialins.cn/tags/%E5%B7%A5%E5%85%B7/</link><description>Recent content in 工具 on 我的博客</description><generator>Hugo</generator><language>zh</language><lastBuildDate>Wed, 17 Sep 2025 03:15:05 +0000</lastBuildDate><atom:link href="https://blog.xialins.cn/tags/%E5%B7%A5%E5%85%B7/index.xml" rel="self" type="application/rss+xml"/><item><title>随机密码生产器</title><link>https://blog.xialins.cn/posts/migrated/post-176/</link><pubDate>Wed, 17 Sep 2025 03:15:05 +0000</pubDate><guid>https://blog.xialins.cn/posts/migrated/post-176/</guid><description>&lt;h5 id="python源码">python源码&lt;/h5>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-python" data-lang="python">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">import&lt;/span> random
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">import&lt;/span> re
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#f92672">import&lt;/span> tkinter &lt;span style="color:#66d9ef">as&lt;/span> tk
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>a &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#e6db74">&amp;#39;abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ!@#%&amp;amp;*()&amp;lt;&amp;gt;&lt;/span>&lt;span style="color:#e6db74">{}&lt;/span>&lt;span style="color:#e6db74">+?123456789&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">generate&lt;/span>(n): &lt;span style="color:#75715e">#n表示密码位&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> s &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ddtt &lt;span style="color:#f92672">=&lt;/span> \&lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#ae81ff">\&amp;#34;&lt;/span>&lt;span style="color:#e6db74"> # 初始化 ddtt 变量&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">while&lt;/span> s &lt;span style="color:#f92672">==&lt;/span> &lt;span style="color:#ae81ff">0&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ddtt &lt;span style="color:#f92672">=&lt;/span> [] &lt;span style="color:#75715e"># 创建一个空列表&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">for&lt;/span> i &lt;span style="color:#f92672">in&lt;/span> range(n): &lt;span style="color:#75715e"># 循环n次&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> rand &lt;span style="color:#f92672">=&lt;/span> random&lt;span style="color:#f92672">.&lt;/span>randint(&lt;span style="color:#ae81ff">0&lt;/span>, len(a)&lt;span style="color:#f92672">-&lt;/span>&lt;span style="color:#ae81ff">1&lt;/span>) &lt;span style="color:#75715e"># 生成随机数&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ddtt&lt;span style="color:#f92672">.&lt;/span>append(a[rand]) &lt;span style="color:#75715e"># 将随机数添加到列表中&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> ddtt &lt;span style="color:#f92672">=&lt;/span> \&lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#ae81ff">\&amp;#34;&lt;/span>&lt;span style="color:#e6db74">.join(ddtt) # 将列表转换为字符串&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> re&lt;span style="color:#f92672">.&lt;/span>search(&lt;span style="color:#e6db74">r&lt;/span>&lt;span style="color:#e6db74">&amp;#39;[a-z]&amp;#39;&lt;/span>, ddtt): &lt;span style="color:#75715e"># 判断字符串中是否包含小写字母&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> re&lt;span style="color:#f92672">.&lt;/span>search(&lt;span style="color:#e6db74">r&lt;/span>&lt;span style="color:#e6db74">&amp;#39;[A-Z]&amp;#39;&lt;/span>, ddtt): &lt;span style="color:#75715e"># 判断字符串中是否包含大写字母&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> re&lt;span style="color:#f92672">.&lt;/span>search(&lt;span style="color:#e6db74">r&lt;/span>&lt;span style="color:#e6db74">&amp;#39;[0-9]&amp;#39;&lt;/span>, ddtt): &lt;span style="color:#75715e"># 判断字符串中是否包含数字&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">if&lt;/span> re&lt;span style="color:#f92672">.&lt;/span>search(&lt;span style="color:#e6db74">r&lt;/span>&lt;span style="color:#e6db74">&amp;#39;[!@#%&amp;amp;*()&amp;lt;&amp;gt;&lt;/span>&lt;span style="color:#e6db74">{}&lt;/span>&lt;span style="color:#e6db74">+?]&amp;#39;&lt;/span>, ddtt): &lt;span style="color:#75715e"># 判断字符串中是否包含特殊字符&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> s &lt;span style="color:#f92672">=&lt;/span> &lt;span style="color:#ae81ff">1&lt;/span> &lt;span style="color:#75715e"># 满足条件，跳出循环&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">return&lt;/span> ddtt &lt;span style="color:#75715e"># 返回生成字符串&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">create_window&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> \&lt;span style="color:#e6db74">&amp;#34;&lt;/span>&lt;span style="color:#ae81ff">\&amp;#34;\&amp;#34;&lt;/span>&lt;span style="color:#e6db74">创建一个带有两个文本框的简单GUI窗口&lt;/span>&lt;span style="color:#ae81ff">\&amp;#34;\&amp;#34;\&amp;#34;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 创建主窗口&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> window &lt;span style="color:#f92672">=&lt;/span> tk&lt;span style="color:#f92672">.&lt;/span>Tk()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> window&lt;span style="color:#f92672">.&lt;/span>title(\&lt;span style="color:#e6db74">&amp;#34;随机密码生成&lt;/span>&lt;span style="color:#ae81ff">\&amp;#34;&lt;/span>&lt;span style="color:#e6db74">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 设置窗口大小&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> window&lt;span style="color:#f92672">.&lt;/span>geometry(\&lt;span style="color:#e6db74">&amp;#34;220x250&lt;/span>&lt;span style="color:#ae81ff">\&amp;#34;&lt;/span>&lt;span style="color:#e6db74">) # 宽x高 (像素)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 添加输入文本标签&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input_label &lt;span style="color:#f92672">=&lt;/span> tk&lt;span style="color:#f92672">.&lt;/span>Label(window, text&lt;span style="color:#f92672">=&lt;/span>\&lt;span style="color:#e6db74">&amp;#34;生成几位数：&lt;/span>&lt;span style="color:#ae81ff">\&amp;#34;&lt;/span>&lt;span style="color:#e6db74">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input_label&lt;span style="color:#f92672">.&lt;/span>pack(pady&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">5&lt;/span>) &lt;span style="color:#75715e"># 增加上下内边距&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 创建输入文本框&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input_entry &lt;span style="color:#f92672">=&lt;/span> tk&lt;span style="color:#f92672">.&lt;/span>Entry(window)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input_entry&lt;span style="color:#f92672">.&lt;/span>insert(&lt;span style="color:#ae81ff">0&lt;/span>, \&lt;span style="color:#e6db74">&amp;#34;8&lt;/span>&lt;span style="color:#ae81ff">\&amp;#34;&lt;/span>&lt;span style="color:#e6db74">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input_entry&lt;span style="color:#f92672">.&lt;/span>pack(pady&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">5&lt;/span>) &lt;span style="color:#75715e"># 增加上下内边距&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 添加显示长度标签&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> length_label &lt;span style="color:#f92672">=&lt;/span> tk&lt;span style="color:#f92672">.&lt;/span>Label(window, text&lt;span style="color:#f92672">=&lt;/span>\&lt;span style="color:#e6db74">&amp;#34;随机密码生成：&lt;/span>&lt;span style="color:#ae81ff">\&amp;#34;&lt;/span>&lt;span style="color:#e6db74">)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> length_label&lt;span style="color:#f92672">.&lt;/span>pack(pady&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">5&lt;/span>) &lt;span style="color:#75715e"># 增加上下内边距&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 创建一个框架来放置显示长度文本框和复制按钮&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> frame &lt;span style="color:#f92672">=&lt;/span> tk&lt;span style="color:#f92672">.&lt;/span>Frame(window)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> frame&lt;span style="color:#f92672">.&lt;/span>pack(pady&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">5&lt;/span>)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 创建显示长度文本框，初始值为空&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> length_entry &lt;span style="color:#f92672">=&lt;/span> tk&lt;span style="color:#f92672">.&lt;/span>Entry(frame)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> length_entry&lt;span style="color:#f92672">.&lt;/span>pack(pady&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">5&lt;/span>) &lt;span style="color:#75715e"># 增加上下内边距&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">copy_text&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> text_to_copy &lt;span style="color:#f92672">=&lt;/span> length_entry&lt;span style="color:#f92672">.&lt;/span>get() &lt;span style="color:#75715e"># 获取要复制的文本内容&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> window&lt;span style="color:#f92672">.&lt;/span>clipboard_clear() &lt;span style="color:#75715e"># 清空剪贴板内容&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> window&lt;span style="color:#f92672">.&lt;/span>clipboard_append(text_to_copy) &lt;span style="color:#75715e"># 将文本内容添加到剪贴板&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 创建一个按钮&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> button_1 &lt;span style="color:#f92672">=&lt;/span> tk&lt;span style="color:#f92672">.&lt;/span>Button(frame, text&lt;span style="color:#f92672">=&lt;/span>\&lt;span style="color:#e6db74">&amp;#34;复制&lt;/span>&lt;span style="color:#ae81ff">\&amp;#34;&lt;/span>&lt;span style="color:#e6db74">, command=copy_text)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> button_1&lt;span style="color:#f92672">.&lt;/span>pack(pady&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">5&lt;/span>) &lt;span style="color:#75715e"># 增加上下内边距&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 定义按钮点击事件的处理函数&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#66d9ef">def&lt;/span> &lt;span style="color:#a6e22e">update_length&lt;/span>():
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> input_text &lt;span style="color:#f92672">=&lt;/span> input_entry&lt;span style="color:#f92672">.&lt;/span>get() &lt;span style="color:#75715e"># 获取输入文本&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> num &lt;span style="color:#f92672">=&lt;/span> generate(int(input_text)) &lt;span style="color:#75715e"># 调用generate函数&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> length_entry&lt;span style="color:#f92672">.&lt;/span>delete(&lt;span style="color:#ae81ff">0&lt;/span>, tk&lt;span style="color:#f92672">.&lt;/span>END) &lt;span style="color:#75715e"># 清空长度文本框&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> length_entry&lt;span style="color:#f92672">.&lt;/span>insert(&lt;span style="color:#ae81ff">0&lt;/span>, str(num)) &lt;span style="color:#75715e"># 将生成的密码插入到长度文本框中&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 创建一个按钮&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> button &lt;span style="color:#f92672">=&lt;/span> tk&lt;span style="color:#f92672">.&lt;/span>Button(window, text&lt;span style="color:#f92672">=&lt;/span>\&lt;span style="color:#e6db74">&amp;#34;更新密码&lt;/span>&lt;span style="color:#ae81ff">\&amp;#34;&lt;/span>&lt;span style="color:#e6db74">, command=update_length)&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> button&lt;span style="color:#f92672">.&lt;/span>pack(pady&lt;span style="color:#f92672">=&lt;/span>&lt;span style="color:#ae81ff">10&lt;/span>) &lt;span style="color:#75715e"># 增加上下内边距&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> window&lt;span style="color:#f92672">.&lt;/span>bind(&lt;span style="color:#66d9ef">lambda&lt;/span> event: button&lt;span style="color:#f92672">.&lt;/span>invoke()) &lt;span style="color:#75715e"># 绑定回车键触发按钮&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#75715e"># 运行主事件循环&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> window&lt;span style="color:#f92672">.&lt;/span>mainloop()
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#66d9ef">if&lt;/span> __name__ &lt;span style="color:#f92672">==&lt;/span> \&lt;span style="color:#e6db74">&amp;#34;__main__&lt;/span>&lt;span style="color:#ae81ff">\&amp;#34;&lt;/span>&lt;span style="color:#e6db74">:&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> create_window()
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item></channel></rss>