`

虚拟MFA生成

 
阅读更多

虚拟MFA生成:

 

 

import cn.hutool.core.codec.Base32;
import cn.hutool.crypto.digest.otp.TOTP;
import java.time.Instant;
import java.util.Date;
class MyTotp
    public static void main(String[] args) {
        // 每分钟30秒变动
        String key = "xxx"; // Base32编码秘钥
        TOTP totp = new TOTP(Base32.decode(key));
        Instant instant = Instant.ofEpochSecond((new Date()).getTime());
        long millis = instant.toEpochMilli() / totp.getTimeStep().toMillis();
        int code = totp.generate(millis / 1000);
        System.out.println("time = " + instant + ", code = " + code);
    }
}

 

require 'rubygems'
require 'openssl'
require 'rotp'

pw = "Base32编码秘钥" 
totp = ROTP::TOTP.new(pw.strip)
t  = Time.now
puts %{时间: #{t.strftime("%T")} Code: #{totp.at(t.to_i)}}

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics