All Downloads are FREE. Search and download functionalities are using the official Maven repository.

wf.utils.java.algoritms.ciphers.a5.A5Cipher Maven / Gradle / Ivy

package wf.utils.java.algoritms.ciphers.a5;

import java.util.BitSet;

// https://en.wikipedia.org/wiki/A5/1
public class A5Cipher {

    private final A5KeyStreamGenerator keyStreamGenerator;
    private static final int KEY_STREAM_LENGTH = 228; // 28.5 bytes so we need to pad bytes or something

    public A5Cipher(BitSet sessionKey, BitSet frameCounter) {
        keyStreamGenerator = new A5KeyStreamGenerator();
        keyStreamGenerator.initialize(sessionKey, frameCounter);
    }

    public BitSet encrypt(BitSet plainTextBits) {
        // create a copy
        BitSet result = new BitSet(KEY_STREAM_LENGTH);
        result.xor(plainTextBits);

        BitSet key = keyStreamGenerator.getNextKeyStream();
        result.xor(key);

        return result;
    }

    public void resetCounter() {
        keyStreamGenerator.reInitialize();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy