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等参数。