我找到了一些关于加密插件选项字段的说明here, 使用:
encrypt($input_string, $key){
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$h_key = hash(\'sha256\', $key, TRUE);
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $h_key, $input_string, MCRYPT_MODE_ECB, $iv));
以及
here, 推荐WP的便携式PHP密码哈希框架:
require_once( \'/path/to/wp-includes/class-phpass.php\' );
$wp_hasher = new PasswordHash( 8, TRUE );
$password = \'swordfish\';
$hashed_password = $wp_hasher->HashPassword( $password );
但我遇到了问题,因为我想在表单字段中显示解密后的密码(如果设置了),但不知道如何在发送到DB之前对其进行加密。
当前代码如下:
// Register and define the settings
add_action(\'admin_init\', \'my_plugin_admin_init\');
function my_plugin_admin_init(){
register_setting(
\'my_plugin_options\',
\'my_plugin_options\',
\'my_plugin_validate_options\'
);
add_settings_section(
\'my_plugin_main\',
\'The Credentials\',
\'my_plugin_section_text\',
\'my_plugin\'
);
// Display and fill the form field
function my_plugin_password() {
$options = get_option( \'my_plugin_options\',__(\'Option Not Set\') );
if (isset($options[\'my_plugin_password\'])) {
$my_plugin_password = decrypt($options, $options[\'my_plugin_password\'], SECURE_AUTH_SALT);
$my_plugin_password_enc = encrypt($my_plugin_password, SECURE_AUTH_SALT);
} else {
$my_plugin_password = _e(\'YOUR PASSWORD\');
$my_plugin_password_enc = \'\';
}
// echo the field
echo "<input id=\'my_plugin_password\' name=\'my_plugin_options[my_plugin_password]\' type=\'text\' value=\'$my_plugin_password_enc\' />";
}
add_settings_field(
\'my_password\',
\'Enter Password: \',
\'my_password\',
\'my_plugin\',
\'my_plugin_main\'
);
我想现在发生的是,一个未加密的密码被解密成这样的东西:@H!��f46vQa��,�五、��3.�1.��(Ȥ��
“加密的”一个看起来就像输入字符串,后面跟着A
s
是否需要添加update_option
打个电话吧?
还想知道使用JavaScript进行加密和解密是否更安全,这样只有加密的字符串离开客户端。但我不确定当用户从另一个客户端登录时,这将如何工作。