Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Author : Paul Kocher
- * E-mail : pck@netcom.com
- * Date : 1997
- * Description: C implementation of the Blowfish algorithm.
- */
- #include "includes.h"
- #include "defines.h"
- #include "blowfish.h"
- #define N 16/* Exchange Xl and Xr */
- temp = Xl;
- Xl = Xr;
- Xr = temp;
- }
- /* Exchange Xl and Xr */
- temp = Xl;
- Xl = Xr;
- Xr = temp;
- Xr = Xr ^ ctx->P[1];
- Xl = Xl ^ ctx->P[0];
- *xl = Xl;
- *xr = Xr;
- }
- void Blowfish_Init(BLOWFISH_CTX *ctx, unsigned char *key, int keyLen) {
- int i, j, k;
- uInt32 data, datal, datar;
- for (i = 0; i < 4; i++) {
- for (j = 0; j < 256; j++)
- ctx->S[i][j] = ORIG_S[i][j];
- }
- j = 0;
- for (i = 0; i < N + 2; ++i) {
- data = 0x00000000;
- for (k = 0; k < 4; ++k) {
- data = (data << 8) | key[j];
- j = j + 1;
- if (j >= keyLen)
- j = 0;
- }
- ctx->P[i] = ORIG_P[i] ^ data;
- }
- datal = 0x00000000;
- datar = 0x00000000;
- for (i = 0; i < N + 2; i += 2) {
- Blowfish_Encrypt(ctx, &datal, &datar);
- ctx->P[i] = datal;
- ctx->P[i + 1] = datar;
- }
- for (i = 0; i < 4; ++i) {
- for (j = 0; j < 256; j += 2) {
- Blowfish_Encrypt(ctx, &datal, &datar);
- ctx->S[i][j] = datal;
- ctx->S[i][j + 1] = datar;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement