社区
ASP
帖子详情
电子图章技术
waiber
2003-11-19 06:04:13
做过或者说正在做这方面的给点相关资料!不受语言限制
成功后献出1000分,相信重赏之下必有程序开发高手
...全文
65
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
java
电子
图章
.pdf
java
电子
图章
.doc
java
电子
图章
.doc
基于
电子
图章
的
电子
票据认证
技术
(2006年)
根据对
电子
商务交易中票据的认证要求,针对
电子
票据在互联网上传输的特点,提出了一种基于多层数字水印
技术
的
电子
图章
认证体系,将鲁棒和脆弱的数字水印
技术
相结合,采用认证中心和客户方双重监督机制,实现
电子
票据的不可复制、不可伪造、不可抵赖的目的。该体系在满足法律要求的前提下,
电子
票据通过网络安全快捷地传送给接收方,为实现
电子
交易提供了
技术
保障。
现代
电子
签名常用
技术
及其实现1.doc
目前,可以通过多种
技术
手段实现
电子
签名,在确认了签署者的确切身份后,人们可以用多种不同的方法签署一份
电子
记录。方法有:基于PKI的公钥密码
技术
的数字签名;以生物特征统计学为基础的识别标识;手印、声音印记或视网膜扫描的识别;一个让收件人能识别发件人身份的密码代号、密码或个人识别码PIN;基于量子力学的计算机等等。但比较成熟的、使用方便具有可操作性的、在世界先进国家和我国普遍使用的
电子
签名
技术
,还是基于PKI(Public Key Infrastructure)的数字签名
技术
。
电子
手写签名
技术
在
电子
公文系统中的应用
电子
手写签名
技术
在
电子
公文系统中的应用,就是讲述手写签名
技术
的方法和过程
ASP
28,406
社区成员
356,946
社区内容
发帖
与我相关
我的任务
ASP
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
复制链接
扫一扫
分享
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章