小编ImT*_*uid的帖子

如何在 Crypto++ 中使用 RSA OAEP SHA-256 加密/解密数据

如何使用 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::PublicKeyRSA::PrivateKey*rng是一个AutoSeededRandomPool对象。

有什么方法可以添加/更改这些方法以使其正常工作?我是 C++ 新手,所以请尽可能解释解决方案。

c++ encryption crypto++

6
推荐指数
1
解决办法
1779
查看次数

UIViewControllerRepresentable MessageKit UICollectionView 在显示键盘时滚动经过底部项目

我正在使用 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)

uikit swift messagekit swiftui

5
推荐指数
0
解决办法
720
查看次数

标签 统计

c++ ×1

crypto++ ×1

encryption ×1

messagekit ×1

swift ×1

swiftui ×1

uikit ×1