Я просто пытаюсь понять криптографию, пожалуйста, будьте осторожны.Это не предназначено, чтобы быть безопасным или профессиональным.Я создаю 3 номера для каждой партии.открытый ключ, секретный ключ и модуль.Первая сторона (A) создает свои ключи
let pri = 133
let mod = 256
let pub = mod - pri
и делится "модом" и "пабом" с другими участниками (B, C).Когда B хочет зашифровать строку, он берет открытый ключ и модуль A и делает
// B encrypts
let enc = ( input + pubA ) % modA
A на своей стороне делает
// B decrypts
let dec = ( enc + priA) % modA
, чтобы расшифровать ее.Моя проблема в том, что я могу создать несколько пар ключей, но только 1 связанный открытый ключ с каждым секретным ключом, потому что мне нужно разделить модуль каждой пары для en / decryption.
Можно ли (в этой ситуации) создать несколько публичных номеров для одного частного номера?И если да, то как я могу это сделать?
Спасибо (и извините, если это плохой вопрос)
РЕДАКТИРОВАТЬ Даже если это не "хорошо" для созданияваш собственный шифр, я хочу сделать это ..
Я понял, что пропустил секретный показатель d, так что фи делит (e * expo) -1.
/* Pseude code */
p = q = primes()
n = p * q
phi = (p-1) * (q-1)
e = 3
d = ? // <-- have to find my own secret exponent!
if( gcd(e, p-1) != gcd(e, q-1) ) exit(0)
expo = 0
for(expo < 100000)
if( (e * expo)-1 == phi ) ) d = expo
И поэтому у меня может быть
public(n,e)
private(n,d)
, чтобы я мог поделиться (n, e).Это правильно?