Гаммирование (Реализация на Java)

Java   8 июня 2012  Автор статьи:  

В данной статье мы рассмотрим шифрование на основе гамма последовательностей. Если при XOR кодировании мы получали последовательность байт из ключа, а затем его циклически повторяли, то тут мы будем генерировать последовательность байт на основе некоторого входного байта. В данной реализации каждый следующий член гаммы получается с помощью следующей формулы:T(n) = T(n-1)*A+C % m. Если вы хотите генерировать последовательность с помощью других значений m, A и С, то вы должны учитывать, что значения m и A должны быть взаимопростыми.

public class Gamma {
private int A = 3, C = 2,m = 101;
public byte[] encrypt(String text, int key)
{
int actualKey = key;
byte[] arr = text.getBytes();
byte[] result = new byte[arr.length];
for(int i = 0; i< arr.length; i++) { result[i] = (byte) (arr[i] ^ actualKey); actualKey = (actualKey*A + C)%m; } return result; } public String decrypt(byte[] text, int key) { byte[] result = new byte[text.length]; int actualKey = key; for(int i = 0; i < text.length;i++) { result[i] = (byte) (text[i] ^ actualKey); actualKey = (actualKey*A + C)%m; } return new String(result); } }

Научиться программировать

  • на Delphi

  • на Java

  • на C++