欧几里得-辗转相除法计算私钥d

如,计算17x+3120y=1

/**
 * 辗转相除法计算私钥d
 * @param {BigInt} e 公钥
 * @param {BigInt} n 两个大素数之积,P*Q
 * @returns {BigInt} 余数, d, k
 */
function gcdEx(e, n) {
    if(!n){
        return [e, 1n, 0n]
    }

    let [r, x1, y1] = gcdEx(n, e%n)
    return [r, y1, x1-e/n*y1]
}

posted @ 2021-09-30 20:00  pangqianjin  阅读(141)  评论(0编辑  收藏  举报