如何使用 SHA-256 填充而不是 Crypto++ 中的默认 SHA-1 填充来加密我的字符串数据?我无法找到任何方法来更改我的加密/解密函数使用的填充算法。我听说一些库具有硬编码的填充方案,但我希望有一种方法可以修改 Crypto++ 使用的方法。
这是我的加密方法:
string GUIMain::encryptData(const string data) {
CryptoPP::RSAES_OAEP_SHA_Encryptor e(*serverPublic);
string cipher;
CryptoPP::StringSource ss1(data, true, new CryptoPP::PK_EncryptorFilter(*rng, e, new CryptoPP::StringSink(cipher)));
return cipher;
}
Run Code Online (Sandbox Code Playgroud)
这是我的解密方法:
string GUIMain::decryptData(const string cipher) {
CryptoPP::RSAES_OAEP_SHA_Decryptor d(*privateKey);
string recovered;
CryptoPP::StringSource ss2(cipher, true, new CryptoPP::PK_DecryptorFilter(*rng, d, new CryptoPP::StringSink(recovered)));
return recovered;
}
Run Code Online (Sandbox Code Playgroud)
键(*serverPublic和*privateKey)分别是对象类型RSA::PublicKey和RSA::PrivateKey。*rng是一个AutoSeededRandomPool对象。
有什么方法可以添加/更改这些方法以使其正常工作?我是 C++ 新手,所以请尽可能解释解决方案。
我正在使用 SwiftUI 构建一个应用程序,并且想使用 MessageKit,因此我使用 aUIViewControllerRepresentable来显示 MessageKit 视图。但是,当显示键盘时,消息可以滚动到视图底部。
我仍然可以向下滚动消息,但尝试将消息推UICollectionView到底部会导致同样的问题。隐藏键盘时不会出现此问题。
下面是捕获的 UI 层次结构的屏幕截图,其中隐藏了导航栏和根视图:

集合视图的大小仍然正确,但消息可以滚动到底部,并且滚动指示器位于顶部。
这是带有相关代码的根 SwiftUI 视图:
struct SingleChatView: SwiftUI.View {
@ObservedObject var chat: Chat
@State private var mkView: MessageKitView
init(chat: Chat) {
self.chat = chat
_mkView = State(initialValue: MessageKitView(chat: chat))
}
var body: some SwiftUI.View {
mkView
.navigationBarTitle(chat.name)
.uiKitOnAppear {
mkView.controller.becomeFirstResponder()
mkView.controller.messagesCollectionView.scrollToBottom(animated: true)
chat.clearNotifications()
// Set chat as active
ChatManager.shared.activeChat = chat
}
.onDisappear {
chat.setTypingStatus(to: false)
// Set chat as inactive
ChatManager.shared.activeChat = nil
} …Run Code Online (Sandbox Code Playgroud)