Tạo mật khẩu API
Tạo mật khẩu ngẫu nhiên an toàn bằng CSPRNG (4–256 ký tự, tối đa 100 cái mỗi lần) hoặc kiểm tra độ mạnh, entropy và thời gian bẻ khoá của mật khẩu.
API Password làm hai việc. Khi không có tham số password, API sinh mật khẩu ngẫu nhiên bằng bộ sinh số ngẫu nhiên an toàn mật mã: chọn độ dài length (4–256, mặc định 16), số lượng count (1–100) và các nhóm ký tự lowercase, uppercase, numbers, symbols (mặc định bật hết; đặt false để bỏ nhóm đó). exclude_ambiguous=true loại các ký tự dễ nhầm như O, 0, I, l, 1.
Khi truyền password=..., API kiểm tra độ mạnh của mật khẩu có sẵn: trả về điểm từ 0 đến 4 kèm nhãn (very weak … very strong), entropy tính bằng bit, thời gian ước tính để bẻ khoá offline với tốc độ 10 tỷ lần thử mỗi giây, và danh sách vấn đề như ngắn hơn 8 ký tự, nằm trong danh sách mật khẩu phổ biến, lặp ký tự, chuỗi dễ đoán hoặc thiếu chữ hoa, số, ký hiệu.
Khi sinh mật khẩu, API kèm báo cáo độ mạnh của mật khẩu đầu tiên. Endpoint không lưu hay ghi log mật khẩu. Khi kiểm tra mật khẩu nhạy cảm, nên dùng POST để giá trị không xuất hiện trong URL.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
length | body|query | number | không | 16 | Độ dài mật khẩu, 4–256. |
count | body|query | number | không | 1 | Số mật khẩu cần tạo, 1–100. |
lowercase | body|query | boolean | không | true | Dùng chữ thường a–z. |
uppercase | body|query | boolean | không | true | Dùng chữ hoa A–Z. |
numbers | body|query | boolean | không | true | Dùng chữ số 0–9. |
symbols | body|query | boolean | không | true | Dùng ký hiệu !@#$%^&*()-_=+[]{};:,.?/~ |
exclude_ambiguous | body|query | boolean | không | false | Bỏ các ký tự dễ nhầm (O 0 I l 1). |
password | body|query | string | không | Kiểm tra độ mạnh của mật khẩu này thay vì sinh mật khẩu mới. |
Ví dụ
curl "https://apibox.io.vn/v1/password?length=20&count=2" \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch('https://apibox.io.vn/v1/password?length=20&count=2', {
method: 'GET',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
},
});
const data = await res.json();
console.log(data);import requests
res = requests.get(
"https://apibox.io.vn/v1/password?length=20&count=2",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/password?length=20&count=2');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"length": 20,
"count": 2,
"passwords": [
"6y4#_r8i[}rNJFuHb=e4",
"%@:$yMsZyAa^veIM6K@h"
],
"strength": {
"score": 4,
"label": "very strong",
"entropy_bits": 131.4,
"crack_time_offline": "centuries",
"issues": []
}
}
Ứng dụng
- Tạo mật khẩu ban đầu cho tài khoản người dùng mới
- Sinh secret cho API, mật khẩu WiFi, mật khẩu database trong script
- Hiển thị thanh đo độ mạnh mật khẩu ở form đăng ký
- Rà soát mật khẩu theo quy tắc độ dài và danh sách mật khẩu phổ biến
Hỏi đáp
Mật khẩu sinh ra có thật sự ngẫu nhiên không?
Có. Mật khẩu lấy từ crypto.getRandomValues (CSPRNG) trên Cloudflare Workers, không dùng Math.random, và không bao giờ được lưu lại.
Điểm độ mạnh được tính thế nào?
Entropy = độ dài × log2(số ký tự trong các nhóm đã dùng). Điểm từ 0 (<28 bit) đến 4 (≥80 bit), bị ép về 0 nếu là mật khẩu quá phổ biến và tối đa 2 khi có từ ba vấn đề trở lên.
Có tạo được mật khẩu không có ký hiệu đặc biệt không?
Được: symbols=false. Bạn cũng có thể tắt chữ thường, chữ hoa hoặc số, và thêm exclude_ambiguous=true để mật khẩu dễ đọc, dễ gõ.
API liên quan
Tạo mã hash
Tính MD5, SHA-1, SHA-256, SHA-384, SHA-512 và CRC32 của chuỗi hoặc file trong một lần gọi, xuất hex hoặc base64, hỗ trợ ký HMAC.
B64Mã hoá / Giải mã
Mã hoá hoặc giải mã chuỗi sang Base64, Base64URL, hex, URL encode, HTML entity, Unicode escape, ROT13 hay nhị phân chỉ với một lần gọi API.
JWTGiải mã & ký JWT
Giải mã mọi JWT, kiểm tra hạn dùng và xác thực chữ ký bằng secret, PEM hoặc JWK – hoặc ký token mới với HS256/384/512, RS, PS, ES.