Залил крупное обновление.
Одно из изменений, которое может сломать ваши программы:
В функции textEncrypt требуется не сама соль, а длина ее. По умолчанию 4, как и у функции textDecrypt, т.е. от второго аргумента смело избавляйтесь
Но вроде-бы если сунуть туда вместо длины саму соль, оно длину соли посчитает и сунет за длину, так что программы должны работать нормально.
Сменил тяжелый тест простоты Ферма на +- быстрый алгоритм Тест Миллера — Рабина. Даже если оптимизации не добавило (субьективно добавило), этот алгоритм используется в настоящей криптографии, а значит переход сделан точно не зря).
Для дешифровки и подписи используется китайская теорема об остатках. Это повышает скорость в 4 раза. (В 8 раз, на самом деле, но возведение в степень по модулю дорого обходится:C)
Так же 128-битный (например) ключ будет реально 128-битным. Ранее генерировалось 2 числа по 128 бит, итого ключ 256 бит, сейчас делю на 2 длину и получаются ключи в 128 бит. По этой причине минимальный размер ключа теперь 32 бита. Если у вас ключ 16-ти битный, не беспокойтесь: из-за бага он был 32-битным , лучше беспокойтесь о безопасности))
Сейчас обновлю документацию, но особых изменений в методах нет.