我有一个存储我所有用户信息(用户名、密码等)的 mysql 数据库。我正在构建一个带有 back-sql 的 LDAP 服务器,除了密码字段外,一切正常。所有密码都是基本的 MD5 哈希,所以
select MD5('testPass01')
返回
428a65ed9de7dbf8ef7d08f884528440
显然这是二进制值的十六进制表示。LDAP 将理解一个 base64 编码的字符串,它是这样的
{MD5}Qopl7Z3n2/jvfQj4hFKEQA==
我找到了一个执行转换的 perl 脚本
#!/usr/bin/perl
use MIME::Base64;
use strict;
my @md5 = split "",$ARGV[0];
my @res;
for (my $i = 0 ; $i < 32 ; $i+=2)
{
my $c = (((hex $md5[$i]) << 4) % 255) | (hex $md5[$i+1]);
$res[$i/2] = chr $c;
print $c;
}
print "{MD5}".encode_base64(join "", @res);
#-------------------------------------------#
我的问题是:是否可以通过存储过程使用 SQL 进行转换?我无法安装包含 base64 编码和解码功能的 MySQL 服务器 5.6
谢谢