| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 992 人关注过本帖
标题:如何更新数据库中记录,求大神指点,纠正我的错误
只看楼主 加入收藏
skzhou
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-12-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
如何更新数据库中记录,求大神指点,纠正我的错误
小弟做了个“添加用户”窗体,实现了把用户名密码信息保存到Access数据库表中,并对用户名密码加密;

现要做“登录”窗体,请教如何对数据库表中的字段解密,以便解密后和输入TEXT文本中的值做比对。代码如下:
程序代码:
unit Frmlogin;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    Edit3: TEdit;
    Edit4: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses DataT;

{$R *.dfm}
//解密函数
Function UncrypKey(Src: String; Key: String): string;
var
idx: integer;
KeyLen: integer;
KeyPos: integer;
offset: integer;
dest: string;
SrcPos: integer;
SrcAsc: integer;
TmpSrcAsc: integer;
Range: integer;
begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'Think Space';
KeyPos := 0;
SrcPos := 0;
SrcAsc := 0;
Range := 256;
offset := StrToInt('$' + copy(Src, 1, 2));
SrcPos := 3;
repeat
SrcAsc := StrToInt('$' + copy(Src, SrcPos, 2));
if KeyPos < KeyLen Then
KeyPos := KeyPos + 1
else
KeyPos := 1;
TmpSrcAsc := SrcAsc xor ord(Key[KeyPos]);
if TmpSrcAsc <= offset then
TmpSrcAsc := 255 + TmpSrcAsc - offset
else
TmpSrcAsc := TmpSrcAsc - offset;
dest := dest + chr(TmpSrcAsc);
offset := SrcAsc;
SrcPos := SrcPos + 2;
until SrcPos >= Length(Src);
Result := dest;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
    data.adoqlogin.close;
    data.adoqlogin.sql.clear;
    data.adoqlogin.sql.add('update users set username='张三',password='123456'');

       data.adoconnectBooks.connected:=true;
    data.adoqlogin.execsql;unit Frmlogin;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Button2: TButton;
    Edit3: TEdit;
    Edit4: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses DataT;

{$R *.dfm}
//解密函数
Function UncrypKey(Src: String; Key: String): string;
var
idx: integer;
KeyLen: integer;
KeyPos: integer;
offset: integer;
dest: string;
SrcPos: integer;
SrcAsc: integer;
TmpSrcAsc: integer;
Range: integer;
begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'Think Space';
KeyPos := 0;
SrcPos := 0;
SrcAsc := 0;
Range := 256;
offset := StrToInt('$' + copy(Src, 1, 2));
SrcPos := 3;
repeat
SrcAsc := StrToInt('$' + copy(Src, SrcPos, 2));
if KeyPos < KeyLen Then
KeyPos := KeyPos + 1
else
KeyPos := 1;
TmpSrcAsc := SrcAsc xor ord(Key[KeyPos]);
if TmpSrcAsc <= offset then
TmpSrcAsc := 255 + TmpSrcAsc - offset
else
TmpSrcAsc := TmpSrcAsc - offset;
dest := dest + chr(TmpSrcAsc);
offset := SrcAsc;
SrcPos := SrcPos + 2;
until SrcPos >= Length(Src);
Result := dest;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
    data.adoqlogin.close;
    data.adoqlogin.sql.clear;
    data.adoqlogin.sql.add('update users set username='张三',password='123456'');

       data.adoconnectBooks.connected:=true;
    data.adoqlogin.execsql;


编译提示UPDATE语句出错,求解???
搜索更多相关主题的帖子: 解密 密码 Windows 数据库表 用户名 
2011-12-15 14:40
冰蟾子
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:498
专家分:109
注 册:2006-4-14
收藏
得分:20 
登录窗体比对数据库内的密码并不是提取出来解密,而是将登录窗体的密码加密后比对数据库内的密文。
否则例如MD5等一些现在无法逆向的加密方式你该怎么做?
至于你上面的提示错误,是update中缺少where语句

欢迎到我的blog做客。。。。。。。。
2011-12-16 10:37
老凤凰传奇
Rank: 2
等 级:论坛游民
帖 子:3
专家分:10
注 册:2012-2-16
收藏
得分:0 
要用post方法
2012-02-16 21:22
快速回复:如何更新数据库中记录,求大神指点,纠正我的错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018311 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved