我正在用C ++进行AES加密试验,我在GitHub上发现了AES的实现,问题是输入字节数组的大小应该可以被16整除,并且我的数据在大多数时间内都不会满足这个要求。我想添加填充(0-s到数组的末尾),直到大小可以被16整除。
我有一个计算最接近大小的函数,但我不知道如何为数组添加填充。
function loadArticles () {
var request = new XMLHttpRequest();
request.onreadystatechange = function (){
if (request.readyState === XMLHttpRequest.DONE){
var articles = document.getElementById('articles');
if (request.status === 200) {
var articleData = JSON.parse(this.responseText);
for (var i=0; i< articleData.length; i++) {
var content = `<div class="container">
<div class="row">
<div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
<div class="post-preview">
<a href="/${articleData[i].title}">
<h2 class="post-title">
${articleData[i].heading}</h2>
<h3 class="post-subtitle">
${articleData[i].subtitle}</h3>
</a>
<p class="post-meta">Posted by <a href="#">${articleData[i].author}</a> on Date ${articleData.date[i].toDateString()}</p>
</div>
</div>
</div>
</div>`;
}
articles.innerHTML = content;
} else {
articles.innerHTML('Oops! Could not load all articles!')
}
}
};
输入和调用是:
{{1}}
答案 0 :(得分:1)
大多数加密库会为您添加填充。如果你想自己做,那么:
计算您需要的填充量。
由于C数组不可扩展,因此您需要创建一个新数组来同时保存明文和填充。
PKCS#7填充很常见,所以除非你有理由不这样做,否则选择它。
将明文后跟填充复制到新数组中。
将新阵列传递给AES进行加密;它现在可以被整除成块。
在解密时检查填充是否存在并正确形成。格式错误的填充表示存在问题。
删除填充并返回解密的文本。