Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 参考 » 使用 SQL » SQL 函数 » SQL 函数 (E-O)

 

HASH 函数 [String]

以散列形式返回指定值。

语法
HASH( string-expression[, algorithm ] )
参数
  • string-expression   要散列的值。此参数区分大小写,即使是在不区分大小写的数据库中也是如此。

  • algorithm   用于散列的算法。可接受的值包括:MD5、SHA1、SHA1_FIPS、SHA256、SHA256_FIPS。缺省情况下使用 MD5 算法。

    注意

    FIPS 算法仅供在使用 Certicom 提供的经 FIPS 140-2 认证的软件的系统上使用。

返回值

VARCHAR

注释

使用散列函数可将每个传递到函数的值转换成唯一的字节序列。

如果使用 -fips 选项启动服务器,则使用的算法或行为可能会不同,如下所述:

  • 如果指定 SHA1,则使用 SHA1_FIPS

  • 如果指定 SHA256,则使用 SHA256_FIPS

  • 如果指定 MD5,则返回错误

以下为返回类型,它们取决于所使用的算法:

小心

所有这些算法都是单向散列算法。无法通过散列值重新创建原始字符串。

另请参见
标准和兼容性
  • SQL/2003   服务商扩充。

示例

以下示例创建了一个称为 user_info 的表,以存储应用程序用户的信息(包括用户 ID 和口令)。还会向该表中插入一行。通过使用 HASH 函数和 SHA256 算法求出口令的散列值。如果不想以明文存储口令,而某个外部应用程序需要对口令进行比较,则以此方式存储散列值形式的口令可能会有用处。

CREATE TABLE user_info ( 
  employee_id   INTEGER NOT NULL PRIMARY KEY,
  user_name CHAR(80),
  user_pwd CHAR(80) );
INSERT INTO user_info 
  VALUES ( '1', 's_phillips', HASH( 'mypass', 'SHA256' ) );