资源简介
本程序包括了一个头文件kasumi.h和4个.c文件
代码片段和文件信息
/*-------------------------------------------------------------------
*F8-Confidentiality Algorithm
*-------------------------------------------------------------------
*
*A sample implementation of f8the 3GPP Confidentiality algorithm.
*
*This has been coded for claritynot necessarily for efficiency.
*
*This will compile and run correctly on both Intel(little endian)
*and Sparc(big endian)machines.(Compilers used supported 32-bit ints)
*
*Version 1.0 05 November 1999
*
*-------------------------------------------------------------------*/
#include“kasumi.h“
#include
/*---------------------------------------------------------
*f8()
*Given keycountbearerdirectiondata
*and bit length encrypt the bit stream
*---------------------------------------------------------*/
void f8(u8*keyint countint bearerint diru8*dataint length)
{
REGISTER64 A;/*the modifier*/
REGISTER64 temp;/*The working register*/
int in;
u8 ModKey[16];/*Modified key*/
u16 blkcnt;/*The block counter*/
/*Start by building our global modifier*/
temp.b32[0]=temp.b32[1]=0;
A.b32[0]=A.b32[1]=0;
/*initialise register in an endian correct manner*/
A.b8[0]=(u8)(count>>24);
A.b8[1]=(u8)(count>>16);
A.b8[2]=(u8)(count>>8);
A.b8[3]=(u8)(count);
A.b8[4]=(u8)(bearer<<3);
A.b8[4]|=(u8)(dir<<2);
/*Construct the modified key and then“kasumi“A*/
for(n=0;n<16;++n)
ModKey[n]=(u8)(key[n]^0x55);
KeySchedule(ModKey);
Kasumi(A.b8);/*First encryption to create modifier*/
/*Final initialisation steps*/
blkcnt=0;
KeySchedule(key);
/*Now run the block cipher*/
while(length>0)
{
/*First we calculate the next 64-bits of keystream*/
/*XOR in A and BLKCNT to last value*/
temp.b32[0]^=A.b32[0];
temp.b32[1]^=A.b32[1];
temp.b8[7]^=(u8)blkcnt;
temp.b8[6]^=(u8)(blkcnt>>8);
/*KASUMI it to produce the next block of keystream*/
Kasumi(temp.b8);
/*Setto the number of bytes of input data*
*we have to modify.(=8 if length<=64)*/
if(length>=64)
n=8;
else
n=(length+7)/8;
/*XOR the keystream with the input data stream*/
for(i=0;i *data++^=temp.b8[i];
length-=64;/*done another 64 bits*/
++blkcnt;/*increment BLKCNT*/
}
}
/*-----------------------------------------------------------
*e n d o f f 8.c
*-----------------------------------------------------------*/
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2805 2009-07-02 15:32 算法源码\Debug\f8.obj
文件 3461 2009-07-02 15:40 算法源码\Debug\f9.obj
文件 8547 2009-07-02 15:25 算法源码\Debug\kasumi.obj
文件 159834 2009-07-02 15:58 算法源码\Debug\main.exe
文件 179352 2009-07-02 15:58 算法源码\Debug\main.ilk
文件 4469 2009-07-02 15:58 算法源码\Debug\main.obj
文件 164560 2009-07-02 15:32 算法源码\Debug\main.pch
文件 435200 2009-07-02 15:58 算法源码\Debug\main.pdb
文件 41984 2009-07-02 15:58 算法源码\Debug\vc60.idb
文件 53248 2009-07-02 15:58 算法源码\Debug\vc60.pdb
文件 2390 2009-07-02 15:26 算法源码\f8.c
文件 3272 2009-07-02 15:40 算法源码\f9.c
文件 7717 2009-07-02 15:22 算法源码\kasumi.c
文件 592 2009-07-02 15:04 算法源码\kasumi.h
文件 509 2009-07-02 15:58 算法源码\main.c
文件 3611 2009-07-02 15:26 算法源码\main.dsp
文件 533 2009-07-02 15:23 算法源码\main.dsw
文件 50176 2009-07-02 15:58 算法源码\main.ncb
文件 54784 2009-07-02 15:58 算法源码\main.opt
文件 242 2009-07-02 15:58 算法源码\main.plg
目录 0 2009-07-02 15:58 算法源码\Debug
目录 0 2009-07-02 15:58 算法源码
----------- --------- ---------- ----- ----
1177286 22
- 上一篇:Iris数据集分类,查看几种分类方法的效率
- 下一篇:VC 实现三维旋转(源码)
评论
共有 条评论