新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   >>中国XML论坛<<     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> XML与数字内容安全(DRM,XrML,RDD, MPEG-21, XACML), XML传输的安全, 基于XML的签名,基于XML的加密
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 XML安全 』 → [转载]XML 加密和 XML 签名简介 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 63909 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [转载]XML 加密和 XML 签名简介 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     Reta 美女呀,离线,快来找我吧!
      
      
      等级:大一新生
      文章:0
      积分:54
      门派:XML.ORG.CN
      注册:2005/4/9

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Reta发送一个短消息 把Reta加入好友 查看Reta的个人资料 搜索Reta在『 XML安全 』的所有贴子 引用回复这个贴子 回复这个贴子 查看Reta的博客11
    发贴心情 [求助]

    我现在想写一个论文
    是关于基于XML的数字签名算法分析的
    范围太大 不知道重点应放在哪里
    这方面资料你都多去哪里查找呢?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/4/9 17:27:00
     
     denglin 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:5
      积分:89
      门派:XML.ORG.CN
      注册:2005/1/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给denglin发送一个短消息 把denglin加入好友 查看denglin的个人资料 搜索denglin在『 XML安全 』的所有贴子 引用回复这个贴子 回复这个贴子 查看denglin的博客12
    发贴心情 
    顶啊!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/4/20 17:20:00
     
     yangyongn 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:2
      积分:62
      门派:XML.ORG.CN
      注册:2005/5/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yangyongn发送一个短消息 把yangyongn加入好友 查看yangyongn的个人资料 搜索yangyongn在『 XML安全 』的所有贴子 引用回复这个贴子 回复这个贴子 查看yangyongn的博客13
    发贴心情 
    aVFP的数据库加密算法

    转载自《VFP网络工作室》 (文/曲景东)

        一、 前 言
      在 应 用 软 件 中, 数 据 库 管 理 软 件 是 应 用 的 最 广 泛 的 软 件。 数 据 库 管 理 软 件 的 安 全 性、 保 密 性 是 开 发、 应 用 人 员 较 为 关 心 的。 如 何 防 止 无 关 人 员 浏 览 数 据 库, 如 何 防 止 数 据 库 被 非 法 修 改、 破 坏 ? 常 用 的 方 法 是 给 数 据 库、 管 理 程 序 加 上 密 码。 那 么, 加 了 密 码 就 安 全 了 吗 ? 怎 样 才 能 使 密 码 安 全 呢 ?
      二、 传 统 的 密 码 加 密 方 法
      从dBASE 到dBASEIII , 从 FOXBASE 到FOXBASE +, 从FOXPRO 到VISUAL FOXPRO, 常 用 加 密 码 的 方 法 给 程 序、 数 据 库 加 密。 常 见 的 密 码 有 以 下 几 种: 固 定 密 码, 简 单 加 密 的 固 定 密 码, 加 密 变 化 的 密 码, 具 体 分 析 如 下:
      1、 固 定 密 码

      固 定 密 码, 就 是 系 统 只 有 一 个 密 码, 而 且 是 固 定 的, 不 可 变 的。 常 见 于 用Dbase、FOXBASE、FOXBASE +、FOXPRO2.X 开 发 的 数 据 库 管 理 系 统。 常 用 如 下 语 句:

    I=1
    DO WHILE .T.
    PWD=SPACE(8)
    SET CONS OFF
    @12,35 SAY " 口 令!!!"
    ACCEPT TO PWD
    IF TRIM(PWD)< >"123456"
    IF I >=3
    @20,32 SAY "口令错误,您不能使用!"
    RETURN
    ENDIF
    @12,30 SAY "第" +STR(I,1)+"次口令错!"
    I =I +1
    ELSE
    @20,28 SAY "欢迎使用本系统!"
    EXIT
    ENDIF
    ENDDO

      从 以 上 语 句 不 难 看 出, 其 核 心 是: 变 量PWD 与 输 入 值 的 比 较。 密 码“1234” 是 程 序 设 计 时 设 定 的, 以 后 应 用 时 是 无 法 修 改 的, 如 果 修 改, 就 要 改 变 源 程 序。 当 然, 也 可 以 编 写 一 段 子 程 序 用 来 修 改 密 码, 修 改 前, 其 判 断 旧 密 码 是 否 正 确, 也 用 IF TRIM(PWD)< >"123456" 语 句。 其 灵 活 性 很 差, 在pctool 等 工 具 出 现 后, 保 密 性 就 显 得 差 了。

      2、 简 单 加 密 的 固 定 密 码

      简 单 加 密 的 固 定 密 码, 是 指 把 密 码 进 行 简 单 的 加 密, 但 密 码 仍 然 是 固 定 的, 不 变 的。 简 单 加 密 一 般 有 两 种:“ 钥 匙 盘” 法 和“ 变 换 法”。“ 钥 匙 盘” 法, 就 是 把 密 码 存 放 在 一 张 软 盘 上, 使 用 时, 把“ 钥 匙 盘” 插 入 计 算 机, 系 统 程 序 读 取 软 盘 中 的 密 码。 或 把 密 码 和 操 作 员 姓 名 存 到 数 据 库 中, 此 数 据 库 存 放 于 软 盘 内, 使 用 时 把“ 钥 匙 盘” 插 入 计 算 机, 系 统 读 取 软 盘 中 的 密 码 和 操 作 员 姓 名, 下 面 是 此 法 的 主 要 语 句:

      USE A:KLK && 到KLK 数 据 库 内 查 找 输 入 的 操 作 员 的 姓 名;

    I=1
    DO WHILE .T.
    STORE SAPCE(8) TO XM
    @ 10,26 SAY "请输入操作员姓名:" GET XM
    READ
    LOCATE ALL FOR LTRIM(TRIM(XM))=LTRIM(TRIM(NAME))
    IF .NOT. EOF()
    EXIT &&操作员姓名输入正确,向下执行;
    ENDIF
    IF I >=3
    &&操作员姓名输入计数,输入次数超过3次,退出系统;(代码同前)

    ENDIF
    ENDDO
    IF I< 5 &&姓名正确后,比较输入口令正确否;
    MKL =SPACE(8)
    I=1
    DO WHILE I< 3
    SET CONS OFF
    @12,30 SAY " 口令! !"
    ACCEPT TO MKL
    SET CONS ON
    IF TRIM(MKL)=TRIM(KL)
    EXIT &&口令正确,向下执行;
    ELSE
    IF I >=3
    I=5
    EXIT
    ENDIF
    @12,30 SAY "第" +STR(I,1)+"次口令错!"
    I =I +1
    ENDIF
    ENDDO
    ENDIF
    IF I=5
    @20,32 SAY "口令错误,您不能使用!"
    ELSE
    @20,32 SAY "欢迎使用!"
    ENDIF
    RETURN

      这 种 加 密 方 法 保 密 性 要 好 一 些, 但 每 次 使 用 都 要 用“ 钥 匙 盘” 进 入 系 统, 很 繁 琐。

      变 换 法, 就 是 通 过 对 密 码 的 运 算, 使 密 码 发 生 变 化 的 方 法, 一 般 采 用 换 算 法, 常 用 的 加 密 语 句 如 下:

      PSD =CHR(65)+CHR(66)+CHR(67)+"9"

      函 数CHR(), 是 用 来 换 算ASCII 码 的, 换 算 后 的PSD 是ABC9。 用 这 种 简 单 的 换 算, 可 以 避 免 密 码 被 直 接 发 现, 如 果 和 上 述 方 法 混 合 应 用, 保 密 性 就 加 强 了。

      3、 简 单 加 密 变 化 的 密 码

      以 上 密 码 都 是 固 定 的, 下 面 介 绍 一 种 经 简 单 加 密 变 换 的 密 码。 这 是 利 用 时 间 函 数 来 加 密 的 算 法, 密 码 每 天 都 不 同。 密 码 由 变 化 的 时 间 和 固 定 字 符 构 成。 其 核 心 语 句 为:

      kl=DATE()

      PWD= SUBSTR(CDOW(kl),1,3)+"1234"

      CDOW() 函 数, 输 入 年 月 日, 返 回 星 期 几( 字 符 型)。 操 作 者 根 据 今 天 是 星 期 几, 将 星 期 的 前3 个 英 文 字 母 和 固 定 的“1234” 输 入, 与 变 量PWD 比 较。 程 序 会 把 今 天 的 日 期 换 算 成 星 期 数, 然 后 取 前3 位, 并 加 上“1234”, 合 成 今 天 的 密 码 变 量PWD。 这 样 就 实 现 了 每 天 有 不 同 的 密 码。 保 密 性 加 强 了。

      以 上 几 种 加 密 方 法 都 是 传 统 的 简 单 的 加 密 方 法, 其 特 点 是 简 单、 保 密 性 差, 密 码 单 一, 保 护 能 力 较 低, 主 要 用 于Dbase、FOXBASE、FOXBASE +、FOXPRO2.x 中, 由 于 上 述 软 件 的 编 译 不 是 真 正 的 编 译, 其 密 码 容 易 被 发 现。

    三、 一 种 新 型 密 码 加 密 方 法
      以 上 介 绍 的 是 几 种 固 定 的 密 码 加 密 方 法, 下 面 介 绍 一 下 可 变 密 码。“ 可 变 密 码” 指 其 密 码 值 可 由 设 置 自 行 改 变, 这 种 方 法 一 般 由 文 件 保 存 密 码, 且 密 码 经 过 加 密 运 算。 密 码 的 加 密 算 运 算 方 法 很 多, 常 用 的 有: 转 换 法、 位 移 法、 时 间 法、 随 机 法 等。 转 换 法, 就 是 把 输 入 的 密 码 经 过 转 换 计 算, 转 换 成 保 存 密 码, 取 密 码 时, 再 经 过 逆 运 算, 把 密 码 还 原。
      不 定 时 密 码 也 时 可 变 密 码 的 一 种, 是 指 密 码 的 出 现 是 以 随 机 方 式 来 询 问 用 户。 如: 用 户 在 执 行 两 个 功 能 后 必 须 输 入 密 码, 下 一 次 检 查 密 码 可 能 在 执 行 三 个 功 能 后 检 查 密 码。 这 种 密 码 较 为 隐 蔽。 其 方 法 如 下: 首 先 声 明 一 个 变 量, 用 来 计 数, 是1-5 的 随 机 数; 在 每 一 个 过 程、 函 数、 或 命 令 执 行 前, 累 加 该 变 量 值; 当 该 变 量 值 等 于 其 随 机 值 时, 调 用 密 码 查 询 程 序。

      下 面 具 体 介 绍 一 种 基 于VFP5.0 的 密 码 设 定 方 法。 其 特 点 是: 具 有 使 用 登 记 功 能; 每 人 一 个 密 码, 并 可 随 时 更 换; 密 码 经 加 密 运 算, 不 易 被 破 解。

      基 本 思 路 如 下: 首 先 建 立 两 个 数 据 库(table), 一 个 用 来 存 放 口 令 及 对 应 的 用 户( 称 为“ 口 令 库”), 另 一 个 存 放 用 户 登 录 使 用 情 况( 称 为“ 登 录 库”)。 在 再 建 立 两 个 窗 口(form), 一 个 用 来 检 查 口 令, 另 一 个 用 来 修 改 口 令。 接 下 来 定 义 两 个 过 程(procedure), 一 个 用 来 给 口 令 加 密(“ 加 密 过 程”), 另 一 个 用 给 口 令 解 密(“ 解 密 过 程”)。 这 个“ 加 密 过 程”, 是 把 密 码 经 加 密 运 算 后 存 入 口 令 库, 而“ 解 密 过 程” 实 际 上 是 把 输 入 的 密 码 经 加 密 运 算 后 与 口 令 库 内 的 密 码 进 行 比 较, 并 不 是 解 密。 为 了 使 密 码 输 入 时 不 被 人 看 见, 要 对 密 码 输 入 的 文 字 框 的 属 性 作 如 下 工 作: 进 入DATA 属 性 栏, 把InputMask 属 性 改 为:XXXXXX, 进 入LAYOUT 属 性 栏, 把PassWordChar 的 属 性 改 为:“*”, 这 样, 输 入 的 密 码 就 不 会 被 别 人 发 现。( 在FOXBASE FOXBASE +,FOXPRO2.X 中, 常 用 设 置 背 景 颜 色 与 输 入 密 码 字 符 颜 色 相 同 的 办 法 来 防 止 别 人 看 见。)

      “ 解 密 过 程” 代 码 如 下:

    parameter password
    pas=""
    n1=asc(substr(name,1,1))
    &&取姓名的第一个拼音字母,换算成ASCII码
    n2= asc(substr(name,2,1)) &&作为加密的键值
    n3= asc(substr(name,3,1))
    n=int((n1+n2+n3)/3)
    for i=1 to len(trim(password))
    &&使用BITXOR()函数对密码进行解密
    tempchr=bitxor(asc(substr(password,i,1)),n)
    pas=pas+chr(tempchr)
    endfor
    locate for klk.user_id=name
    &&与口令库内的与姓名相对应的口令进行比较
    if (klk.key< >pas) and (password< >"hg")
    result=.f.
    else
    result=.t.
    endif
    return result

      BITXOR() 函 数 是vfp 特 有 的 函 数, 它 将 函 数 的 两 个 参 数 转 换 成 二 进 制 数, 并 且 执 行“ 与” 操 作, 返 回 一 个 十 进 制 的 结 果。 用 它 来 进 行 加 密 运 算, 保 密 性 强。 加 上 密 码 键 值n( 取 姓 名 的 第 一 个 拼 音 字 母, 经 求 和, 再 取 平 均 值, 再 取 整 运 算, 换 算 成ASCII 码), 得 到 每 人 一 个 的 密 码。

      该“ 过 程” 的 定 义 方 法 如 下: 在 定 义 检 查 密 码 的 窗 口(form) 的 编 辑 状 态 下, 用 鼠 标 点 菜 单form, 选“new method”, 键 入“ 过 程” 名。 然 后 双 击 正 在 编 辑 的 窗 口(form), 然 后 进 入" 过 程" 的 编 辑 状 态, 写 入 如 上 代 码。 加 密 过 程 是 解 密 过 程 的 逆 运 算, 代 码 如 下:

    parameter password
    pas=""
    for i=1 to len(trim(password))
    n1=asc(substr(name,1,1))
    n2= asc(substr(name,2,1))
    n3= asc(substr(name,3,1))
    n=int((n1+n2+n3)/3)
    tempchr=bitxor(asc(substr(password,i,1)),n)
    pas=pas+chr(tempchr)
    endfor
    replace key with pas

      检 查 密 码 的 思 路 是: 先 到 输 入 姓 名 的 文 字 框 内 取 姓 名, 再 到 口 令 库 内 查 找 姓 名, 如 果 找 不 到 姓 名, 返 回 消 息 窗 口“ 您 不 是 指 定 用 户, 请 与 系 统 管 理 员 联 系 !”, 系 统 退 出; 如 果 找 到 了 用 户 姓 名, 则 继 续 进 行, 把 输 入 的 口 令 和 姓 名 送 到 解 密“ 过 程” 中 进 行 运 算, 解 密“ 过 程” 将 其 解 密, 并 与 口 令 库 内 的 数 据 进 行 比 较, 如 果 不 正 确, 开 始 计 数, 要 求 重 新 输 入 密 码, 三 次 不 正 确, 退 出 系 统。 如 果 正 确, 释 放 当 前 窗 口, 进 入 系 统。

      主 要 代 码 如 下:

    name=trim(ThisForm.Text1.value)
    if empty(name)
    a=messagebox
    ("请输入用户名!",0+48,"信息窗口")
    ThisForm.Text1.setfocus
    return
    endif
    pass=trim(ThisForm.Text2.value)
    if empty(pass)
    a=messagebox
    ("请输入口令!",0+48,"信息窗口")
    ThisForm.Text2.setfocus
    return
    endif
    use klk
    locate for klk.user_id=name
    if found()=.f.
    =messagebox
    ("你不是指定用户,请与系统管理员联系!",64,"提示信息")
    thisform.release
    else
    ok =Thisform.decode(pass)
    if ok=.t.
    ThisForm.Label3.caption="欢迎使用!"
    wait window '
    欢迎使用!按任意键进入“系统维护模块。”'
    release thisform
    do form wh_wh
    else
    if m=3
    m=m+1
    ThisForm.Label3.caption="口令错,您无权使用"
    a=messagebox
    ("对不起,您无权使用!",0+48,"信息窗口")
    release thisform
    else
    a=messagebox
    ("口令错,请重新输入!",0+48,"信息窗口")
    ThisForm.Text2.value=""
    ThisForm.Text2.setfocus
    m=m+1
    endif
    endif
    endif


      改 变 密 码 的 思 路 是: 首 先 读 取 用 户 姓 名, 如 果 是 新 用 户 则 请 用 户 输 入 新 密 码, 并 记 录 下 获 得 新 密 码 的 时 间; 如 果 是 老 用 户, 则 读 取 用 户 旧 密 码, 将 旧 密 码 进 行 解 密 运 算 并 和 口 令 库 内 容 比 较, 如 果 正 确, 请 用 户 输 入 新 密 码, 并 将 新 密 码 通 过 解 密 运 算 存 入 口 令 库, 并 记 录 修 改 时 间。

      主 要 代 码 如 下:

    name=ThisForm.Text3.value
    oldpass=ThisForm.Text1.value
    newpass=ThisForm.Text2.value
    if isblank(newpass)
    = messagebox("请重新输入新密码!",64,"信息提示")
    ThisForm.Text1.setfocus()
    return
    endif
    success=thisform.decode(oldpass)
    if not success
    = messagebox
    ("旧密码不正确,重新输入密码!",64,"信息提示")
    ThisForm.Text1.setfocus()
    return
    endif
    locate for klk.user_id =name &&new user logo
    if found()=.f.
    =messagebox("您是新用户!",64,"信息提示")
    append blank
    replace klk.user_id with name,klk.logo_ddate with date()
    thisform.text3.setfocus
    endif
    thisform.Encode(newpass)
    = messagebox
    ("旧密码已经修改完成,下次请使用新密码!",64,"信息提示")
    ThisForm.Command2.setfocus
    return

      注 意, 在 改 变 密 码 的 窗 口(form) 中, 要 定 义“ 加 密 过 程” 和“ 解 密 过 程”, 方 法 如 上 所 述。

      以 上 是 一 个 加 密 算 法 的 主 要 思 路 和 关 键 代 码, 其 它 部 分 读 者 可 自 行 设 计。 这 个 加 密 算 法 还 可 以 进 一 步 完 善。 如 采 用 不 同 的 函 数 进 行 运 算, 加 入 日 期, 使 每 个 人 每 天 的 密 码 都 不 一 样( 加 入 时 间 的 算 法 如 前 所 述, 利 用CDOW() 函 数 作 为 键 值 的 一 部 分。)。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/5 13:42:00
     
     yangyongn 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:2
      积分:62
      门派:XML.ORG.CN
      注册:2005/5/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yangyongn发送一个短消息 把yangyongn加入好友 查看yangyongn的个人资料 搜索yangyongn在『 XML安全 』的所有贴子 引用回复这个贴子 回复这个贴子 查看yangyongn的博客14
    发贴心情 
    aVFP的数据库加密算法

    转载自《VFP网络工作室》 (文/曲景东)

        一、 前 言
      在 应 用 软 件 中, 数 据 库 管 理 软 件 是 应 用 的 最 广 泛 的 软 件。 数 据 库 管 理 软 件 的 安 全 性、 保 密 性 是 开 发、 应 用 人 员 较 为 关 心 的。 如 何 防 止 无 关 人 员 浏 览 数 据 库, 如 何 防 止 数 据 库 被 非 法 修 改、 破 坏 ? 常 用 的 方 法 是 给 数 据 库、 管 理 程 序 加 上 密 码。 那 么, 加 了 密 码 就 安 全 了 吗 ? 怎 样 才 能 使 密 码 安 全 呢 ?
      二、 传 统 的 密 码 加 密 方 法
      从dBASE 到dBASEIII , 从 FOXBASE 到FOXBASE +, 从FOXPRO 到VISUAL FOXPRO, 常 用 加 密 码 的 方 法 给 程 序、 数 据 库 加 密。 常 见 的 密 码 有 以 下 几 种: 固 定 密 码, 简 单 加 密 的 固 定 密 码, 加 密 变 化 的 密 码, 具 体 分 析 如 下:
      1、 固 定 密 码

      固 定 密 码, 就 是 系 统 只 有 一 个 密 码, 而 且 是 固 定 的, 不 可 变 的。 常 见 于 用Dbase、FOXBASE、FOXBASE +、FOXPRO2.X 开 发 的 数 据 库 管 理 系 统。 常 用 如 下 语 句:

    I=1
    DO WHILE .T.
    PWD=SPACE(8)
    SET CONS OFF
    @12,35 SAY " 口 令!!!"
    ACCEPT TO PWD
    IF TRIM(PWD)< >"123456"
    IF I >=3
    @20,32 SAY "口令错误,您不能使用!"
    RETURN
    ENDIF
    @12,30 SAY "第" +STR(I,1)+"次口令错!"
    I =I +1
    ELSE
    @20,28 SAY "欢迎使用本系统!"
    EXIT
    ENDIF
    ENDDO

      从 以 上 语 句 不 难 看 出, 其 核 心 是: 变 量PWD 与 输 入 值 的 比 较。 密 码“1234” 是 程 序 设 计 时 设 定 的, 以 后 应 用 时 是 无 法 修 改 的, 如 果 修 改, 就 要 改 变 源 程 序。 当 然, 也 可 以 编 写 一 段 子 程 序 用 来 修 改 密 码, 修 改 前, 其 判 断 旧 密 码 是 否 正 确, 也 用 IF TRIM(PWD)< >"123456" 语 句。 其 灵 活 性 很 差, 在pctool 等 工 具 出 现 后, 保 密 性 就 显 得 差 了。

      2、 简 单 加 密 的 固 定 密 码

      简 单 加 密 的 固 定 密 码, 是 指 把 密 码 进 行 简 单 的 加 密, 但 密 码 仍 然 是 固 定 的, 不 变 的。 简 单 加 密 一 般 有 两 种:“ 钥 匙 盘” 法 和“ 变 换 法”。“ 钥 匙 盘” 法, 就 是 把 密 码 存 放 在 一 张 软 盘 上, 使 用 时, 把“ 钥 匙 盘” 插 入 计 算 机, 系 统 程 序 读 取 软 盘 中 的 密 码。 或 把 密 码 和 操 作 员 姓 名 存 到 数 据 库 中, 此 数 据 库 存 放 于 软 盘 内, 使 用 时 把“ 钥 匙 盘” 插 入 计 算 机, 系 统 读 取 软 盘 中 的 密 码 和 操 作 员 姓 名, 下 面 是 此 法 的 主 要 语 句:

      USE A:KLK && 到KLK 数 据 库 内 查 找 输 入 的 操 作 员 的 姓 名;

    I=1
    DO WHILE .T.
    STORE SAPCE(8) TO XM
    @ 10,26 SAY "请输入操作员姓名:" GET XM
    READ
    LOCATE ALL FOR LTRIM(TRIM(XM))=LTRIM(TRIM(NAME))
    IF .NOT. EOF()
    EXIT &&操作员姓名输入正确,向下执行;
    ENDIF
    IF I >=3
    &&操作员姓名输入计数,输入次数超过3次,退出系统;(代码同前)

    ENDIF
    ENDDO
    IF I< 5 &&姓名正确后,比较输入口令正确否;
    MKL =SPACE(8)
    I=1
    DO WHILE I< 3
    SET CONS OFF
    @12,30 SAY " 口令! !"
    ACCEPT TO MKL
    SET CONS ON
    IF TRIM(MKL)=TRIM(KL)
    EXIT &&口令正确,向下执行;
    ELSE
    IF I >=3
    I=5
    EXIT
    ENDIF
    @12,30 SAY "第" +STR(I,1)+"次口令错!"
    I =I +1
    ENDIF
    ENDDO
    ENDIF
    IF I=5
    @20,32 SAY "口令错误,您不能使用!"
    ELSE
    @20,32 SAY "欢迎使用!"
    ENDIF
    RETURN

      这 种 加 密 方 法 保 密 性 要 好 一 些, 但 每 次 使 用 都 要 用“ 钥 匙 盘” 进 入 系 统, 很 繁 琐。

      变 换 法, 就 是 通 过 对 密 码 的 运 算, 使 密 码 发 生 变 化 的 方 法, 一 般 采 用 换 算 法, 常 用 的 加 密 语 句 如 下:

      PSD =CHR(65)+CHR(66)+CHR(67)+"9"

      函 数CHR(), 是 用 来 换 算ASCII 码 的, 换 算 后 的PSD 是ABC9。 用 这 种 简 单 的 换 算, 可 以 避 免 密 码 被 直 接 发 现, 如 果 和 上 述 方 法 混 合 应 用, 保 密 性 就 加 强 了。

      3、 简 单 加 密 变 化 的 密 码

      以 上 密 码 都 是 固 定 的, 下 面 介 绍 一 种 经 简 单 加 密 变 换 的 密 码。 这 是 利 用 时 间 函 数 来 加 密 的 算 法, 密 码 每 天 都 不 同。 密 码 由 变 化 的 时 间 和 固 定 字 符 构 成。 其 核 心 语 句 为:

      kl=DATE()

      PWD= SUBSTR(CDOW(kl),1,3)+"1234"

      CDOW() 函 数, 输 入 年 月 日, 返 回 星 期 几( 字 符 型)。 操 作 者 根 据 今 天 是 星 期 几, 将 星 期 的 前3 个 英 文 字 母 和 固 定 的“1234” 输 入, 与 变 量PWD 比 较。 程 序 会 把 今 天 的 日 期 换 算 成 星 期 数, 然 后 取 前3 位, 并 加 上“1234”, 合 成 今 天 的 密 码 变 量PWD。 这 样 就 实 现 了 每 天 有 不 同 的 密 码。 保 密 性 加 强 了。

      以 上 几 种 加 密 方 法 都 是 传 统 的 简 单 的 加 密 方 法, 其 特 点 是 简 单、 保 密 性 差, 密 码 单 一, 保 护 能 力 较 低, 主 要 用 于Dbase、FOXBASE、FOXBASE +、FOXPRO2.x 中, 由 于 上 述 软 件 的 编 译 不 是 真 正 的 编 译, 其 密 码 容 易 被 发 现。

    三、 一 种 新 型 密 码 加 密 方 法
      以 上 介 绍 的 是 几 种 固 定 的 密 码 加 密 方 法, 下 面 介 绍 一 下 可 变 密 码。“ 可 变 密 码” 指 其 密 码 值 可 由 设 置 自 行 改 变, 这 种 方 法 一 般 由 文 件 保 存 密 码, 且 密 码 经 过 加 密 运 算。 密 码 的 加 密 算 运 算 方 法 很 多, 常 用 的 有: 转 换 法、 位 移 法、 时 间 法、 随 机 法 等。 转 换 法, 就 是 把 输 入 的 密 码 经 过 转 换 计 算, 转 换 成 保 存 密 码, 取 密 码 时, 再 经 过 逆 运 算, 把 密 码 还 原。
      不 定 时 密 码 也 时 可 变 密 码 的 一 种, 是 指 密 码 的 出 现 是 以 随 机 方 式 来 询 问 用 户。 如: 用 户 在 执 行 两 个 功 能 后 必 须 输 入 密 码, 下 一 次 检 查 密 码 可 能 在 执 行 三 个 功 能 后 检 查 密 码。 这 种 密 码 较 为 隐 蔽。 其 方 法 如 下: 首 先 声 明 一 个 变 量, 用 来 计 数, 是1-5 的 随 机 数; 在 每 一 个 过 程、 函 数、 或 命 令 执 行 前, 累 加 该 变 量 值; 当 该 变 量 值 等 于 其 随 机 值 时, 调 用 密 码 查 询 程 序。

      下 面 具 体 介 绍 一 种 基 于VFP5.0 的 密 码 设 定 方 法。 其 特 点 是: 具 有 使 用 登 记 功 能; 每 人 一 个 密 码, 并 可 随 时 更 换; 密 码 经 加 密 运 算, 不 易 被 破 解。

      基 本 思 路 如 下: 首 先 建 立 两 个 数 据 库(table), 一 个 用 来 存 放 口 令 及 对 应 的 用 户( 称 为“ 口 令 库”), 另 一 个 存 放 用 户 登 录 使 用 情 况( 称 为“ 登 录 库”)。 在 再 建 立 两 个 窗 口(form), 一 个 用 来 检 查 口 令, 另 一 个 用 来 修 改 口 令。 接 下 来 定 义 两 个 过 程(procedure), 一 个 用 来 给 口 令 加 密(“ 加 密 过 程”), 另 一 个 用 给 口 令 解 密(“ 解 密 过 程”)。 这 个“ 加 密 过 程”, 是 把 密 码 经 加 密 运 算 后 存 入 口 令 库, 而“ 解 密 过 程” 实 际 上 是 把 输 入 的 密 码 经 加 密 运 算 后 与 口 令 库 内 的 密 码 进 行 比 较, 并 不 是 解 密。 为 了 使 密 码 输 入 时 不 被 人 看 见, 要 对 密 码 输 入 的 文 字 框 的 属 性 作 如 下 工 作: 进 入DATA 属 性 栏, 把InputMask 属 性 改 为:XXXXXX, 进 入LAYOUT 属 性 栏, 把PassWordChar 的 属 性 改 为:“*”, 这 样, 输 入 的 密 码 就 不 会 被 别 人 发 现。( 在FOXBASE FOXBASE +,FOXPRO2.X 中, 常 用 设 置 背 景 颜 色 与 输 入 密 码 字 符 颜 色 相 同 的 办 法 来 防 止 别 人 看 见。)

      “ 解 密 过 程” 代 码 如 下:

    parameter password
    pas=""
    n1=asc(substr(name,1,1))
    &&取姓名的第一个拼音字母,换算成ASCII码
    n2= asc(substr(name,2,1)) &&作为加密的键值
    n3= asc(substr(name,3,1))
    n=int((n1+n2+n3)/3)
    for i=1 to len(trim(password))
    &&使用BITXOR()函数对密码进行解密
    tempchr=bitxor(asc(substr(password,i,1)),n)
    pas=pas+chr(tempchr)
    endfor
    locate for klk.user_id=name
    &&与口令库内的与姓名相对应的口令进行比较
    if (klk.key< >pas) and (password< >"hg")
    result=.f.
    else
    result=.t.
    endif
    return result

      BITXOR() 函 数 是vfp 特 有 的 函 数, 它 将 函 数 的 两 个 参 数 转 换 成 二 进 制 数, 并 且 执 行“ 与” 操 作, 返 回 一 个 十 进 制 的 结 果。 用 它 来 进 行 加 密 运 算, 保 密 性 强。 加 上 密 码 键 值n( 取 姓 名 的 第 一 个 拼 音 字 母, 经 求 和, 再 取 平 均 值, 再 取 整 运 算, 换 算 成ASCII 码), 得 到 每 人 一 个 的 密 码。

      该“ 过 程” 的 定 义 方 法 如 下: 在 定 义 检 查 密 码 的 窗 口(form) 的 编 辑 状 态 下, 用 鼠 标 点 菜 单form, 选“new method”, 键 入“ 过 程” 名。 然 后 双 击 正 在 编 辑 的 窗 口(form), 然 后 进 入" 过 程" 的 编 辑 状 态, 写 入 如 上 代 码。 加 密 过 程 是 解 密 过 程 的 逆 运 算, 代 码 如 下:

    parameter password
    pas=""
    for i=1 to len(trim(password))
    n1=asc(substr(name,1,1))
    n2= asc(substr(name,2,1))
    n3= asc(substr(name,3,1))
    n=int((n1+n2+n3)/3)
    tempchr=bitxor(asc(substr(password,i,1)),n)
    pas=pas+chr(tempchr)
    endfor
    replace key with pas

      检 查 密 码 的 思 路 是: 先 到 输 入 姓 名 的 文 字 框 内 取 姓 名, 再 到 口 令 库 内 查 找 姓 名, 如 果 找 不 到 姓 名, 返 回 消 息 窗 口“ 您 不 是 指 定 用 户, 请 与 系 统 管 理 员 联 系 !”, 系 统 退 出; 如 果 找 到 了 用 户 姓 名, 则 继 续 进 行, 把 输 入 的 口 令 和 姓 名 送 到 解 密“ 过 程” 中 进 行 运 算, 解 密“ 过 程” 将 其 解 密, 并 与 口 令 库 内 的 数 据 进 行 比 较, 如 果 不 正 确, 开 始 计 数, 要 求 重 新 输 入 密 码, 三 次 不 正 确, 退 出 系 统。 如 果 正 确, 释 放 当 前 窗 口, 进 入 系 统。

      主 要 代 码 如 下:

    name=trim(ThisForm.Text1.value)
    if empty(name)
    a=messagebox
    ("请输入用户名!",0+48,"信息窗口")
    ThisForm.Text1.setfocus
    return
    endif
    pass=trim(ThisForm.Text2.value)
    if empty(pass)
    a=messagebox
    ("请输入口令!",0+48,"信息窗口")
    ThisForm.Text2.setfocus
    return
    endif
    use klk
    locate for klk.user_id=name
    if found()=.f.
    =messagebox
    ("你不是指定用户,请与系统管理员联系!",64,"提示信息")
    thisform.release
    else
    ok =Thisform.decode(pass)
    if ok=.t.
    ThisForm.Label3.caption="欢迎使用!"
    wait window '
    欢迎使用!按任意键进入“系统维护模块。”'
    release thisform
    do form wh_wh
    else
    if m=3
    m=m+1
    ThisForm.Label3.caption="口令错,您无权使用"
    a=messagebox
    ("对不起,您无权使用!",0+48,"信息窗口")
    release thisform
    else
    a=messagebox
    ("口令错,请重新输入!",0+48,"信息窗口")
    ThisForm.Text2.value=""
    ThisForm.Text2.setfocus
    m=m+1
    endif
    endif
    endif


      改 变 密 码 的 思 路 是: 首 先 读 取 用 户 姓 名, 如 果 是 新 用 户 则 请 用 户 输 入 新 密 码, 并 记 录 下 获 得 新 密 码 的 时 间; 如 果 是 老 用 户, 则 读 取 用 户 旧 密 码, 将 旧 密 码 进 行 解 密 运 算 并 和 口 令 库 内 容 比 较, 如 果 正 确, 请 用 户 输 入 新 密 码, 并 将 新 密 码 通 过 解 密 运 算 存 入 口 令 库, 并 记 录 修 改 时 间。

      主 要 代 码 如 下:

    name=ThisForm.Text3.value
    oldpass=ThisForm.Text1.value
    newpass=ThisForm.Text2.value
    if isblank(newpass)
    = messagebox("请重新输入新密码!",64,"信息提示")
    ThisForm.Text1.setfocus()
    return
    endif
    success=thisform.decode(oldpass)
    if not success
    = messagebox
    ("旧密码不正确,重新输入密码!",64,"信息提示")
    ThisForm.Text1.setfocus()
    return
    endif
    locate for klk.user_id =name &&new user logo
    if found()=.f.
    =messagebox("您是新用户!",64,"信息提示")
    append blank
    replace klk.user_id with name,klk.logo_ddate with date()
    thisform.text3.setfocus
    endif
    thisform.Encode(newpass)
    = messagebox
    ("旧密码已经修改完成,下次请使用新密码!",64,"信息提示")
    ThisForm.Command2.setfocus
    return

      注 意, 在 改 变 密 码 的 窗 口(form) 中, 要 定 义“ 加 密 过 程” 和“ 解 密 过 程”, 方 法 如 上 所 述。

      以 上 是 一 个 加 密 算 法 的 主 要 思 路 和 关 键 代 码, 其 它 部 分 读 者 可 自 行 设 计。 这 个 加 密 算 法 还 可 以 进 一 步 完 善。 如 采 用 不 同 的 函 数 进 行 运 算, 加 入 日 期, 使 每 个 人 每 天 的 密 码 都 不 一 样( 加 入 时 间 的 算 法 如 前 所 述, 利 用CDOW() 函 数 作 为 键 值 的 一 部 分。)。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/5 13:43:00
     
     yangyongn 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:2
      积分:62
      门派:XML.ORG.CN
      注册:2005/5/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给yangyongn发送一个短消息 把yangyongn加入好友 查看yangyongn的个人资料 搜索yangyongn在『 XML安全 』的所有贴子 引用回复这个贴子 回复这个贴子 查看yangyongn的博客15
    发贴心情 
    数据库安全与保密

        随着计算机科学技术的发展与普及,特别是计算机在国民经济各重要部门的广泛应用,计算机安全已是当前信息社会非常关注的突出问题,而数据库系统,担负着存储和管理上述数据信息的任务。因而,如何保证和加强其安全性和保密性,已成为目前迫切需要解决的热门课题。

    一、 数据库安全与保密概述
    数据库系统,一般可以理解成两部分:一部分是数据库,按一定的方式存取数据;另一部分是数据库管理系统(DBMS),为用户及应用程序提供数据访问,并具有对数据库进行管理、维护等多种功能。
    数据库系统安全,包含两层含义:

    第一层是指系统运行安全,它包括:

    法律、政策的保护,如用户是否有合法权利,政策是否允许等;
    物理控制安全,如机房加锁等;
    硬件运行安全;
    操作系统安全,如数据文件是否保护等;
    灾害、故障恢复;
    死锁的避免和解除;
    电磁信息泄漏防止。
    第二层是指系统信息安全,它包括:

    用户口令字鉴别;
    用户存取权限控制;
    数据存取权限、方式控制;
    审计跟踪;
    数据加密。
    二、 数据库基本安全架构
    数据库系统信息安全性依赖于两个层次:一层是数据库管理系统本身提供的用户名/口令字识别、视图、使用权限控制、审计等管理措施,大型数据库管理系统Oracle、Sybase、Ingress等均有此功能;另一层就是靠应用程序设置的控制管理,如使用较普遍的Foxbase、Forpro等。作为数据库用户,最关心自身数据资料的安全,特别是用户的查询权限问题。对此,目前一些大型数据库管理系统(如Oracle、Sybase等产品)提供了以下几种主要手段。

    ⒈ 用户分类
    不同类型的用户授予不同的数据管理权限。一般将权限分为三类:数据库登录权限类、资源管理权限类和数据库管理员权限类。

    有了数据库登录权限的用户才能进入数据库管理系统,才能使用数据库管理系统所提供的各类工具和实用程序。同时,数据库客体的主人可以授予这类用户以数据查询、建立视图等权限。这类用户只能查阅部分数据库信息,不能改动数据库中的任何数据。

    具有资源管理权限的用户,除了拥有上一类的用户权限外,还有创建数据库表、索引等数据库客体的权限,可以在权限允许的范围内修改、查询数据库,还能将自己拥有的权限授予其他用户,可以申请审计。

    具有数据库管理员权限的用户将具有数据库管理的一切权限,包括访问任何用户的任何数据,授予(或回收)用户的各种权限,创建各种数据库客体,完成数据库的整库备份、装入重组以及进行全系统的审计等工作。这类用户的工作是谨慎而带全局性的工作,只有极少数用户属于这种类型。

    ⒉ 数据分类
    同一类权限的用户,对数据库中数据管理和使用的范围又可能是不同的。为此,DBMS提供了将数据分类的功能,即建立视图。管理员把某用户可查询的数据逻辑上归并起来,简称一个或多个视图,并赋予名称,在把该视图的查询权限授予该用户(也可以授予多个用户)。这种数据分类可以进行得很细,其最小粒度是数据库二维表中一个交叉的元素。

    ⒊ 审计功能
    大型DBMS提供的审计功能是一个十分重要的安全措施,它用来监视各用户对数据库施加的动作。有两种方式的审计,即用户审计和系统审计。用户审计时,DBMS的审计系统记下所有对自己表或视图进行访问的企图(包括成功的和不成功的)及每次操作的用户名、时间、操作代码等信息。这些信息一般都被记录在数据字典(系统表)之中,利用这些信息用户可以进行审计分析。系统审计由系统管理员进行,其审计内容主要是系统一级命令以及数据库客体的使用情况。

    三、 数据库加密
    一般而言,数据库系统提供的上述基本安全技术能够满足一般的数据库应用,但对于一些重要部门或敏感领域的应用,仅靠上述这些措施是难以完全保证数据的安全性,某些用户尤其是一些内部用户仍可能非法获取用户名、口令字,或利用其他方法越权使用数据库,甚至可以直接打开数据库文件来窃取或篡改信息。因此,有必要对数据库中存储的重要数据进行加密处理,以实现数据存储的安全保护。

    ⒈ 数据库密码系统的基本流程
    数据加密,就是将明文数据经过一定的交换(一般为变序和代替)变成密文数据。

    数据脱密是加密的逆过程,即将密文数据转变成可见的明文数据。

    一个密码系统包含明文集合、密文集合、密钥集合和算法,其中密钥和算法构成了密码系统的基本单元。算法是一些公式、法则或程序,规定明文与密文之间的变换方法,密钥可以看作算法中的参数。

    数据库密码系统要求将明文数据加密成密文数据,数据库中存储密文数据,查询时将密文数据取出脱密得到明文信息。

    ⒉ 数据库加密的特点
    较之传统的数据加密技术,数据库密码系统有其自身的要求和特点。传统的加密以报文为单位,加脱密都是从头至尾顺序进行。数据库数据的使用方法决定了它不可能以整个数据库文件为单位进行加密。当符合检索条件的记录被检索出来后,就必须对该记录迅速脱密。然而该记录是数据库文件中随机的一段,无法从中间开始脱密,除非从头到尾进行一次脱密,然后再去查找相应的这个记录,显然这是不合适的。必须解决随机地从数据库文件中某一段数据开始脱密的问题。

    ⑴ 数据库密码系统应采用公开密钥
    传统的密码系统中,密钥是秘密的,知道的人越少越好。一旦获取了密钥和密码体制就能攻破密码,解开密文。而数据库数据是共享的,有权限的用户随时需要知道密钥来查询数据。因此,数据库密码系统宜采用公开密钥的加密方法。设想数据库密码系统的加密算法是保密的,而且具有相当的强度,那么利用密钥,采用OS和DBMS层的工具,也无法得到数据明文。

    ⑵ 多级密钥结构
    数据库关系运算中参与运算的最小单位是字段,查询路径依次是库名、表名、记录名和字段名。因此,字段是最小的加密单位。也就是说当查得一个数据后,该数据所在的库名、表名、记录名、字段名都应是知道的。对应的库名、表名、记录名、字段名都应该具有自己的子密钥,这些子密钥组成了一个能够随时加/脱密的公开密钥。

    可以设计一个数据库,其中存放有关数据库名、表名、字段名的子密钥,系统启动后将这些子密钥读入内存供数据库用户使用。与记录相对应的子密钥,一般的方法应是在该记录中增加一条子密钥数据字段。

    ⑶ 加密机制
    有些公开密钥体制的密码,如RSA密码,其加密密钥是公开的,算法也是公开的,但是其算法是个人一套,而作为数据库密码的加密算法不可能因人而异,因为寻找这种算法有其自身的困难和局限性,机器中也不可能存放很多种算法,因此这类典型的公开密钥的加密体制也不适合于数据库加密。数据库加/脱密密钥应该是相同、公开的,而加密算法应该是绝对保密的。

    数据库公开密钥加密机制应是一个二元函数:

    密文=F(密钥,明文)

    当加密算法F确定之后,只要给出密钥和待加密的明文,即可得到相应的密文。脱密过程即是加密过程的逆过程:

    明文=F-1(密钥,密文)

    由此可知,数据库密码的加密机制应是既可加密又可脱密的可逆过程。

    ⑷ 加密算法
    加密算法是数据加密的核心,一个好的加密算法产生的密文应该频率平衡,随机无重码规律,周期很长而又不可能产生重复现象。窃密者很难通过对密文频率、重码等特征的分析获得成功。同时,算法必须适应数据库系统的特性,加/脱密响应迅速。

    著名的MH背包算法就是一种适合数据库加密的算法。它的基本思想是:有一个函数F,使X=F(K,Y),在这里X相当于公开密钥向量,Y相当于明文。在算法F不公开的情况下,若已知K和X,要还原出Y来,穷尽次数为2n次。如果向量的分量n较大时,用穷尽的方法来还原将是十分困难的。

    ⒊ 数据库加密的范围
    数据加密通过对明文进行复杂的加密操作,以达到无法发现明文和密文之间、密文和密钥之间的内在关系,也就是说经过加密的数据经得起来自OS和DBMS的攻击。另一方面,DBMS要完成对数据库文件的管理和使用,必须具有能够识别部分数据的条件。据此,只能对数据库中数据进行部分加密。

    ⑴ 索引字段不能加密
    为了达到迅速查询的目的,数据库文件需要建立一些索引。不论是字典式的单词索引、B树索引或HASH函数索引等,它们的建立和应用必须是明文状态,否则将失去索引的作用。有的DBMS中可以建立簌聚索引,这类索引也需要在明文状态下建立和维护使用。

    ⑵ 关系运算的比较字段不能加密
    DBMS要组织和完成关系运算,参加并、差、积、商、投影、选择和连接等操作的数据一般都要经过条件筛选,这种"条件"选择项必须是明文,否则DBMS将无法进行比较筛选。例如,要求检索工资在1000元以上的职工人员名单,"工资"字段中的数据若加密,SQL语句就无法辨认比较。

    ⑶ 表间的连接码字段不能加密
    数据模型规范化以后,数据库表之间存在着密切的联系,这种相关性往往是通过"外部编码"联系的,这些编码若加密就无法进行表与表之间的连接运算。

    ⒋ 数据库加密对数据库管理系统原有功能的影响
    目前DBMS的功能比较完备,特别象Oracle、Sybase这些采用Client/Server结构的数据库管理系统,具有数据库管理和应用开发等工具。然而,数据库数据加密以后,DBMS的一些功能将无法使用。

    ⑴ 无法实现对数据制约因素的定义
    Sybase数据库系统的规则定义了数据之间的制约因素。数据一旦加密,DBMS将无法实现这一功能,而且,值域的定义也无法进行。

    值得注意的是,数据库中的每个字段的类型、长度都有具体的限定。数据加密时,数值类型的数据只能在数值范围内加密,日期和字符类型的数据也都只能在各自的类型范围内加密,密文长度也不能超过字段限定的长度,否则DBMS将无法接受这些加密过的数据。

    ⑵ 密文数据的排序、分组和分类
    Select语句中的Group by、Order by、Having子句分别完成分组、排序、分类等操作。这些子句的操作对象如果是加密数据,那么脱密后的明文数据将失去原语句的分组、排序、分类作用,显然这不是用户所需要的。

    ⑶ SQL语言中的内部函数将对加密数据失去作用
    DBMS对各种类型数据均提供了一些内部函数,这些函数不能直接作用于加密数据。

    ⑷ DBMS的一些应用开发工具的使用受到限制
    DBMS的一些应用开发工具不能直接对加密数据进行操作,因而它们的使用会受到限制。

    在数据库安全和加密技术的研究方面,我们只是作了一些尝试性的工作,许多细节有待于进一步深入。通过研究,我们认识到数据库安全与保密这一领域研究的重要性和迫切性。目前的DBMS对数据库的加密问题基本都没有经过仔细考虑,如果在DBMS层考虑这一问题,那么数据库加密将会出现新的格局。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/5 13:45:00
     
     bluehat 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(高数修炼中)
      文章:11
      积分:105
      门派:XML.ORG.CN
      注册:2006/3/25

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给bluehat发送一个短消息 把bluehat加入好友 查看bluehat的个人资料 搜索bluehat在『 XML安全 』的所有贴子 点击这里发送电邮给bluehat 引用回复这个贴子 回复这个贴子 查看bluehat的博客16
    发贴心情 
    非常感谢啊
    我正在做XML的加密与数字签名 啊
    看那个W3C的英文真的有点累了
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/4/19 11:32:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML安全 』的所有贴子 点击这里发送电邮给Google AdSense 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/12/4 8:24:20

    本主题贴数16,分页: [1] [2]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    6,171.875ms