社区
ASP
帖子详情
电子图章技术
waiber
2003-11-19 06:04:13
做过或者说正在做这方面的给点相关资料!不受语言限制
成功后献出1000分,相信重赏之下必有程序开发高手
...全文
61
10
打赏
收藏
电子图章技术
做过或者说正在做这方面的给点相关资料!不受语言限制 成功后献出1000分,相信重赏之下必有程序开发高手
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
waiber
2003-11-19
打赏
举报
回复
分配不当请来消息!
waiber
2003-11-19
打赏
举报
回复
公司已找到一个方法!
不过还是谢谢各位,patchclass(黑翼) 的方法还没有试过,改天再试。
arbeng2002
2003-11-19
打赏
举报
回复
DES算法
RSA算法
tuoshi
2003-11-19
打赏
举报
回复
http://www.google.com/search?q=%E7%94%B5%E5%AD%90%E5%9B%BE%E7%AB%A0%E6%8A%80%E6%9C%AF&ie=UTF-8&oe=UTF-8&hl=zh-CN&btnG=Google%E6%90%9C%E7%B4%A2&lr=
哈哈,接分!~~
patchclass
2003-11-19
打赏
举报
回复
// initial permutation IP
const static char IP_Table[64] = {
58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4,
62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8,
57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3,
61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7
};
// final permutation IP^-1
const static char IPR_Table[64] = {
40, 8, 48, 16, 56, 24, 64, 32, 39, 7, 47, 15, 55, 23, 63, 31,
38, 6, 46, 14, 54, 22, 62, 30, 37, 5, 45, 13, 53, 21, 61, 29,
36, 4, 44, 12, 52, 20, 60, 28, 35, 3, 43, 11, 51, 19, 59, 27,
34, 2, 42, 10, 50, 18, 58, 26, 33, 1, 41, 9, 49, 17, 57, 25
};
// expansion operation matrix
static const char E_Table[48] = {
32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9,
8, 9, 10, 11, 12, 13, 12, 13, 14, 15, 16, 17,
16, 17, 18, 19, 20, 21, 20, 21, 22, 23, 24, 25,
24, 25, 26, 27, 28, 29, 28, 29, 30, 31, 32, 1
};
// 32-bit permutation function P used on the output of the S-boxes
const static char P_Table[32] = {
16, 7, 20, 21, 29, 12, 28, 17, 1, 15, 23, 26, 5, 18, 31, 10,
2, 8, 24, 14, 32, 27, 3, 9, 19, 13, 30, 6, 22, 11, 4, 25
};
// permuted choice table (key)
const static char PC1_Table[56] = {
57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18,
10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36,
63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22,
14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4
};
// permuted choice key (table)
const static char PC2_Table[48] = {
14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10,
23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2,
41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48,
44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32
};
// number left rotations of pc1
const static char LOOP_Table[16] = {
1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1
};
// The (in)famous S-boxes
const static char S_Box[8][4][16] = {
// S1
14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7,
0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8,
4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0,
15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13,
// S2
15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10,
3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5,
0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15,
13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9,
// S3
10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8,
13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1,
13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7,
1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12,
// S4
7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15,
13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9,
10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4,
3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14,
// S5
2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9,
14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6,
4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14,
11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3,
// S6
12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11,
10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8,
9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6,
4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13,
// S7
4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1,
13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6,
1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2,
6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12,
// S8
13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7,
1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2,
7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8,
2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11
};
//////////////////////////////////////////////////////////////////////////
static bool SubKey[16][48];// 16圈子密钥
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// Code starts from Line 121
//////////////////////////////////////////////////////////////////////////
void Des_Run(char Out[8], char In[8], bool Type)
{
static bool M[64], Tmp[32], *Li = &M[0], *Ri = &M[32];
ByteToBit(M, In, 64);
Transform(M, M, IP_Table, 64);
if( Type == ENCRYPT ){
for(int i=0; i<16; i++) {
memcpy(Tmp, Ri, 32);
F_func(Ri, SubKey[i]);
Xor(Ri, Li, 32);
memcpy(Li, Tmp, 32);
}
}else{
for(int i=15; i>=0; i--) {
memcpy(Tmp, Li, 32);
F_func(Li, SubKey[i]);
Xor(Li, Ri, 32);
memcpy(Ri, Tmp, 32);
}
}
Transform(M, M, IPR_Table, 64);
BitToByte(Out, M, 64);
}
void Des_SetKey(const char Key[8])
{
static bool K[64], *KL = &K[0], *KR = &K[28];
ByteToBit(K, Key, 64);
Transform(K, K, PC1_Table, 56);
for(int i=0; i<16; i++) {
RotateL(KL, 28, LOOP_Table[i]);
RotateL(KR, 28, LOOP_Table[i]);
Transform(SubKey[i], K, PC2_Table, 48);
}
}
void F_func(bool In[32], const bool Ki[48])
{
static bool MR[48];
Transform(MR, In, E_Table, 48);
Xor(MR, Ki, 48);
S_func(In, MR);
Transform(In, In, P_Table, 32);
}
void S_func(bool Out[32], const bool In[48])
{
for(char i=0,j,k; i<8; i++,In+=6,Out+=4) {
j = (In[0]<<1) + In[5];
k = (In[1]<<3) + (In[2]<<2) + (In[3]<<1) + In[4];
ByteToBit(Out, &S_Box[i][j][k], 4);
}
}
void Transform(bool *Out, bool *In, const char *Table, int len)
{
static bool Tmp[256];
for(int i=0; i<len; i++)
Tmp[i] = In[ Table[i]-1 ];
memcpy(Out, Tmp, len);
}
void Xor(bool *InA, const bool *InB, int len)
{
for(int i=0; i<len; i++)
InA[i] ^= InB[i];
}
void RotateL(bool *In, int len, int loop)
{
static bool Tmp[256];
memcpy(Tmp, In, loop);
memcpy(In, In+loop, len-loop);
memcpy(In+len-loop, Tmp, loop);
}
void ByteToBit(bool *Out, const char *In, int bits)
{
for(int i=0; i<bits; i++)
Out[i] = (In[i/8]>>(i%8)) & 1;
}
void BitToByte(char *Out, const bool *In, int bits)
{
memset(Out, 0, (bits+7)/8);
for(int i=0; i<bits; i++)
Out[i/8] |= In[i]<<(i%8);
}
//////////////////////////////////////////////////////////////////////////
// Code ends at Line 200
//////////////////////////////////////////////////////////////////////////
/////////////////////
WjcDes.h
h文件
enum {ENCRYPT,DECRYPT};
//////////////////////////////////////////////////////////////////////////
// 加/解密 Type—ENCRYPT:加密,DECRYPT:解密
void Des_Run(char Out[8], char In[8], bool Type=ENCRYPT);
// 设置密钥
void Des_SetKey(const char Key[8]);
////////////////////////////////////
测试文件
WjcDesTest.cpp
#include "WjcDes.h"
#include "stdio.h"
main()
{
char key[8]={1,9,8,0,9,1,7},str[8]="WJC DES";
puts("Before encrypting");
puts(str);
Des_SetKey(key);
Des_Run(str, str, ENCRYPT);
puts("After encrypting");
puts(str);
puts("After decrypting");
Des_Run(str, str, DECRYPT);
puts(str);
}
patchclass
2003-11-19
打赏
举报
回复
RSA具体算法源代码
PB源码:
可以修改成VC的
/**************** 加密程序代码 ***************/
// 以下参数由RSA加密算法得来
integer li_e, li_d, li_n
li_e = 3 // 设置指数e,加密密钥
li_d = 7 // 设置指数d,解密密钥
li_n = 33 // 设置N:两个素数得乘积
string ls_str
ls_str = Trim(sle_1.text) // 将明文转换成字符串,以便随后进行分组
ulong lul_temp
lul_temp = 0
ulong lul_x, lul_y // lul_x: 加密明文; lul_y: 加密密文
int I
do until ls_str = ""
lul_temp = Integer(left(ls_str, 2))
if lul_temp >= li_n then // 将明文分组,且每组均小于N(N=33)
lul_temp = Integer(left(ls_str, 1))
ls_str = right(ls_str, len(ls_str)-1)
else
ls_str = right(ls_str, len(ls_str)-2)
end if
lul_y = 1
for I = 1 to li_e // 进行乘方运算
lul_y = lul_y * lul_temp
next
lul_y = mod( lul_y, 33) // 根据加密公式计算密文
sle_2.text = trim(sle_2.text) + string(lul_y) // sle_2.tex中存放的是加密后的密文
loop
/******************** 结束 *****************/
/**************** 解密程序代码 ***************/
ls_str = Trim(sle_2.text) // 与加密同理,将密文转换成字符串,以便随后进行分组
ulong lul_x0, lul_x1
do until ls_str = ""
lul_temp = Integer(left(ls_str, 2))
if lul_temp >= li_n then // 将密文分组,且每组均小于N(N=33)
lul_temp = Integer(left(ls_str, 1))
ls_str = right(ls_str, len(ls_str)-1)
else
ls_str = right(ls_str, len(ls_str)-2)
end if
// 由于考虑到乘方运算得结果可能会超出数值所允许得最大取值,
// 因此对解密公式进行适当转换,lul_x = lul_x0 * lul_x1
lul_x0 = 1
lul_x1 = 1
// 假如解密密钥是7,则先进行数的4次方运算取模,在进行数的3次方运算取模
for I = 1 to 4
lul_x0 = lul_x0 * lul_temp
next
lul_x0 = mod( lul_x0, 33)
for I = 1 to li_d - 4
lul_x1 = lul_x1 * lul_temp
next
lul_x1 = mod( lul_x1, 33)
lul_x = mod(lul_x0 * lul_x1, 33) // 根据解密公式计算明文
sle_3.text = trim(sle_3.text) + string(lul_x) // sle_3.tex中存放的是解密后的明文
loop
/******************** 结束 *****************/
pb源码,可以修改成vc的
/**************** 加密程序代码 ***************/
// 以下参数由RSA加密算法得来
integer li_e, li_d, li_n
li_e = 3 // 设置指数e,加密密钥
li_d = 7 // 设置指数d,解密密钥
li_n = 33 // 设置N:两个素数得乘积
string ls_str
ls_str = Trim(sle_1.text) // 将明文转换成字符串,以便随后进行分组
ulong lul_temp
lul_temp = 0
ulong lul_x, lul_y // lul_x: 加密明文; lul_y: 加密密文
int I
do until ls_str = ""
lul_temp = Integer(left(ls_str, 2))
if lul_temp >= li_n then // 将明文分组,且每组均小于N(N=33)
lul_temp = Integer(left(ls_str, 1))
ls_str = right(ls_str, len(ls_str)-1)
else
ls_str = right(ls_str, len(ls_str)-2)
end if
lul_y = 1
for I = 1 to li_e // 进行乘方运算
lul_y = lul_y * lul_temp
next
lul_y = mod( lul_y, 33) // 根据加密公式计算密文
sle_2.text = trim(sle_2.text) + string(lul_y) // sle_2.tex中存放的是加密后的密文
loop
/******************** 结束 *****************/
/**************** 解密程序代码 ***************/
ls_str = Trim(sle_2.text) // 与加密同理,将密文转换成字符串,以便随后进行分组
ulong lul_x0, lul_x1
do until ls_str = ""
lul_temp = Integer(left(ls_str, 2))
if lul_temp >= li_n then // 将密文分组,且每组均小于N(N=33)
lul_temp = Integer(left(ls_str, 1))
ls_str = right(ls_str, len(ls_str)-1)
else
ls_str = right(ls_str, len(ls_str)-2)
end if
// 由于考虑到乘方运算得结果可能会超出数值所允许得最大取值,
// 因此对解密公式进行适当转换,lul_x = lul_x0 * lul_x1
lul_x0 = 1
lul_x1 = 1
// 假如解密密钥是7,则先进行数的4次方运算取模,在进行数的3次方运算取模
for I = 1 to 4
lul_x0 = lul_x0 * lul_temp
next
lul_x0 = mod( lul_x0, 33)
for I = 1 to li_d - 4
lul_x1 = lul_x1 * lul_temp
next
lul_x1 = mod( lul_x1, 33)
lul_x = mod(lul_x0 * lul_x1, 33) // 根据解密公式计算明文
sle_3.text = trim(sle_3.text) + string(lul_x) // sle_3.tex中存放的是解密后的明文
loop
/******************** 结束 *****************/
///////////////////////////////////////////////////////////////////////
//////////////////////////
WjcDes.cpp
cpp文件:
#include "memory.h"
#include "WjcDes.h"
//////////////////////////////////////////////////////////////////////////
static void F_func(bool In[32], const bool Ki[48]);// f 函数
static void S_func(bool Out[32], const bool In[48]);// S 盒代替
static void Transform(bool *Out, bool *In, const char *Table, int len);// 变换
static void Xor(bool *InA, const bool *InB, int len);// 异或
static void RotateL(bool *In, int len, int loop);// 循环左移
static void ByteToBit(bool *Out, const char *In, int bits);// 字节组转换成位组
static void BitToByte(char *Out, const bool *In, int bits);// 位组转换成字节组
//////////////////////////////////////////////////////////////////////////
patchclass
2003-11-19
打赏
举报
回复
电子图章技术
是数字签名技术?
那不是一些加密的东西嘛
DES算法
RSA算法
到底是哪个啊
////////////
我还以为是进行图片处理呢,呵呵
xiaotot
2003-11-19
打赏
举报
回复
電子簽名運作原理
數位簽名的作用原理是在建立一個電子簽名的信息時,先計算出信息的摘要,然後用發送者的私人密鑰將信息摘要加密。信息的摘要是將整個信息用128 bits 核對核的方式來代表之。最常使用的兩種信息摘要的運算法則是 MD5(Message Digest version 5A見RFC 1321)和 SHA-1(Secure Hash Algorithm version 1,見 NIST FIPS 180-1)。
信息收受者在收到信息之後,先用事先講好的信息摘要運算法則去計算核對核,然後再用發送者的公開密鑰去將加密送來的信息摘要解密再比較之,如果兩者完全相同,則可以確保資料的完整性。
因為只有發送者用自己的私人密鑰去加密的信息摘要才能被人用發送者的公開密鑰去解密,所以在信息摘要比對完成之際,同時又驗證了發送者的真實身份。
ygghost
2003-11-19
打赏
举报
回复
呵呵,一个4三角用户就快诞生了............
lions911
2003-11-19
打赏
举报
回复
顶!接分!
java
电子
图章
.pdf
从给定的文件内容来看,虽然内容中充斥着重复和杂乱的文字片段,例如"USBKEY"、"MS Office"、"WPS"、"PDF"、"ActiveX"、"ESA2008"、"Office"等,但可以推测这些词汇与
电子
图章
的实现
技术
和相关软件工具有关。...
java
电子
图章
.doc
Java
电子
图章
系统是一种基于Java语言和J2EE
技术
框架构建的B/S架构软件,用于管理和控制
电子
印章的创建、审批、使用和审计。该系统采用"用户-角色-权限"的三维权限管理模式,允许根据不同的职责分配不同的权限,如...
基于
电子
图章
的
电子
票据认证
技术
(2006年)
根据对
电子
商务交易中票据的认证要求,针对
电子
票据在互联网上传输的特点,提出了一种基于多层数字水印
技术
的
电子
图章
认证体系,将鲁棒和脆弱的数字水印
技术
相结合,采用认证中心和客户方双重监督机制,实现
电子
票据...
现代
电子
签名常用
技术
及其实现1.doc
### 现代
电子
签名常用
技术
及其实现 #### 一、引言 随着信息
技术
的飞速发展,尤其是互联网
技术
的普及与应用,
电子
商务已成为推动全球经济发展的新动力。然而,网络安全问题也随之凸显,特别是
电子
商务中的安全性...
电子
手写签名
技术
在
电子
公文系统中的应用
2. **加密算法的高安全性**:采用最新的加密标准AES(Advanced Encryption Standard)对
电子
图章
进行加密,并结合安全杂凑函数SHA(Secure Hash Algorithm)对加密前的
图章
文件进行验证,确保了极高的保密性。...
ASP
28,407
社区成员
356,948
社区内容
发帖
与我相关
我的任务
ASP
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
复制链接
扫一扫
分享
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章