🔐 htpasswd 生成器

生成 htpasswd 条目

批量生成

Nginx/Apache 配置示例

# Nginx 基础认证
location /admin {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

# Apache 基础认证
<Directory "/var/www/admin">
    AuthType Basic
    AuthName "Restricted"
    AuthUserFile /etc/apache2/.htpasswd
    Require valid-user
</Directory>

使用说明

htpasswd 文件用于 Nginx/Apache 的 HTTP 基础认证 (Basic Auth)。Bcrypt 是最安全的算法,推荐在生产环境使用。生成后将内容保存到 .htpasswd 文件中。

+b+'+'hashed_password_placeholder';}function generateRandomSalt(a){var b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./',c='';for(var d=0x0;d请输入用户名和密码';return;}var c=$('htAlgo')['value'],d='';if(c==='sha1'){var e=await sha1Hash(b);d=a+':{SHA}'+e;}else{if(c==='bcrypt'){var f=new TextEncoder()['encode'](b),e=await crypto['subtle']['digest']('SHA-256',f),g=Array['from'](new Uint8Array(e))['map'](function(p){return p['toString'](0x10)['padStart'](0x2,'0');})['join']('');d=a+':{SHA256}'+g,$('htResult')['innerHTML']='htpasswd\x20条目'+d+'复制'+'⚠️\x20浏览器端不支持真正的\x20Bcrypt。如需\x20Bcrypt,请使用\x20htpasswd\x20命令行工具:htpasswd\x20-B\x20.htpasswd\x20'+a+'

'+'命令行htpasswd\x20-B\x20.htpasswd\x20'+a+'复制';return;}else{if(c==='md5'){var h=generateRandomSalt(0x8),f=new TextEncoder()['encode'](b+h),e=await crypto['subtle']['digest']('MD5',f)['catch'](function(){return null;});if(!e){var i=new TextEncoder()['encode'](b),j=await crypto['subtle']['digest']('SHA-256',i),k=Array['from'](new Uint8Array(j))['map'](function(p){return p['toString'](0x10)['padStart'](0x2,'0');})['join']('');d=a+':{SHA256}'+k;}else{var l=Array['from'](new Uint8Array(e))['map'](function(p){return p['toString'](0x10)['padStart'](0x2,'0');})['join']('');d=a+':$apr1+h+'+l;}}else{var m=new TextEncoder()['encode'](b),n=await crypto['subtle']['digest']('SHA-256',m),o=Array['from'](new Uint8Array(n))['map'](function(p){return p['toString'](0x10)['padStart'](0x2,'0');})['join']('');d=a+':'+o;}}}$('htResult')['innerHTML']='htpasswd\x20条目'+d+'复制'+'下载\x20.htpasswd';}async function batchGenerate(){var a=$('htBatch')['value']['split']('\x0a')['filter'](function(j){return j['trim']();}),b=[];for(var c=0x0;c'+h+''+'复制全部'+'下载\x20.htpasswd';}function downloadHtpasswd(b){var c=new Blob([b],{'type':'text/plain'}),d=document['createElement']('a');d['href']=URL['createObjectURL'](c),d['download']='.htpasswd',d['click']();}function copyText(a){if(navigator['clipboard'])navigator['clipboard']['writeText'](a);else{var b=document['createElement']('textarea');b['value']=a,document['body']['appendChild'](b),b['select'](),document['execCommand']('copy'),document['body']['removeChild'](b);}}