是否可以使用Base64在加密字符串中获取冒号

时间:2016-03-30 09:21:21

标签: c# encryption encoding

我使用以下方法加密密码,我稍后将其保存在一个字符串中,我用这样的冒号分隔:

  

用户名:MyEncryptedString

我的问题是,我的方法是否可能返回包含冒号的字符串?

$servername = "localhost";
$username = "root";
$password = "";
$dbname="lamp";
$conn = new mysqli($servername,$username,$password,$dbname);
if ($conn->connect_error) 
{
    die("Connection failed: " . $conn->connect_error);
}

$eventid=mysqli_real_escape_string($conn,$_GET['eventid']);
$days=mysqli_real_escape_string($conn,$_GET['days']);
$query=("select ID from agenda where eventid=?");   
$stmt=$conn->prepare($query);
$stmt->bind_param("i",$eventid);    
$stmt->execute();   
$stmt->store_result();
$row=$stmt->num_rows;
$result = $stmt->get_result();
while($rows=$result->fetch_assoc())
{}

1 个答案:

答案 0 :(得分:3)

现代密码产生的二进制输出应该与随机噪声无法区分。如果将此二进制输出解释为文本(ASCII,UTF-8等),如果密文足够长,则可能会在其中看到:。但是你也看到它用于更短的密文,但不一定是每一个密文。关键是,输出是二进制而不是"字符串"。

可以对二进制输出进行编码以获取字符串。如果使用Base 64或Hex,则无法获得:,因为它不在其字母表中。如果您决定使用Base 85编码,则可能会获得:,具体取决于特定字母(例如Z85)。