OTP(One-Time Password,一次性密码)是一种用于身份验证的技术,其核心是生成一个只能使用一次的密码。OTPauth是一种将OTP信息编码成URI格式的标准,以便于在不同设备间进行传递和存储。
OTPauth URI格式如下:
otpauth://TYPE/LABEL?PARAMETERS
其中,TYPE表示OTP的类型,可以是以下几种:
- totp:基于时间的OTP,如Google Authenticator
- hotp:基于计数的OTP,如YubiKey
- steam:用于Steam平台的OTP
LABEL表示与OTP相关联的标签,可以是任何字符串,但最好是人类可读的。
PARAMETERS是一个包含参数的查询字符串,参数可以是以下几种:
- secret:必需,OTP的密钥,可以是Base32编码的字符串或者HEX编码的字符串。
- issuer:可选,发行人的名称,一般用于标识OTP的来源,如Google、Facebook等。
- algorithm:可选,OTP的加密算法,可以是SHA1、SHA256、SHA512之一,默认为SHA1。
- digits:可选,OTP的位数,可以是6或8,默认为6。
- counter:可选,用于hotp类型的计数器。
- period:可选,用于totp类型的时间周期,单位为秒,默认为30秒。
- image:可选,与OTP相关联的图像,可以是任何URI格式的图片地址。
例如,一个基于时间的OTPauth URI可以是这样的:
otpauth://totp/example.com?secret=JBSWY3DPEHPK3PXP&issuer=Example&algorithm=SHA256&digits=8&period=60
其中,LABEL为example.com,PARAMETERS包含了secret、issuer、algorithm、digits和period等参数。