/* * 产生密钥,公钥和私钥 * @param[in] 随机产生大数密钥 * @param[in] 利用自定义的大数运算规则进行计算 * @return 返回产生成功与否 * – false 表示产生密钥失败 * @pre \e 产生的密钥存储在定义的类中变量中 * @see e,d,n */ bool RSA::RSAKey() { for (i = 0; i<MAX; i++) m[i] = p[i] = q[i] = n[i] = d[i] = e[i] = 0;/*/简单初始化一下*/ prime_random(p, q);/*/随机产生两个大素数*/ mul(p, q, n); mov(p, p1); p1[0]--; mov(q, q1); q1[0]--; /*/q-1;*/ mul(p1, q1, m);//m=(p-1)*(q-1) erand(e, m); rsad(e, m, d); return true; }
inline SimulatedFailure::RandomPrimeGuard::RandomPrimeGuard(FailureType failure_type, int n, int m, uint_fast64_t seed) : m_type(failure_type) { prime_random(m_type, n, m, seed); }