|
| 1 | +# Hash |
| 2 | + |
| 3 | +A concise and efficient macOS hash calculation tool that supports multiple hash algorithms and batch file processing. |
| 4 | + |
| 5 | +## Features |
| 6 | + |
| 7 | +- 🔐 **Multiple Hash Algorithm Support**: MD5, SHA-1, CRC32 |
| 8 | +- 📁 **Batch File Processing**: Calculate hash values for multiple files simultaneously |
| 9 | +- 🎯 **Drag & Drop Operation**: Simply drag files to the application window to start calculation |
| 10 | +- 📋 **One-Click Copy**: Click to copy hash values to clipboard |
| 11 | +- 📊 **File Information Display**: Shows file size, version info, modification date, etc. |
| 12 | +- 🌍 **Multilingual Support**: Supports 22 languages including Chinese, English, Japanese, Korean, German, French, Spanish, Russian, Arabic, etc. |
| 13 | +- 🎨 **Modern Interface**: Native macOS app built with SwiftUI |
| 14 | +- ⚡ **High Performance Computing**: Asynchronous processing with support for large files |
| 15 | + |
| 16 | +## Screenshots |
| 17 | + |
| 18 | + |
| 19 | + |
| 20 | +*Main interface of the Hash application, showcasing file selection, hash calculation, and result display features* |
| 21 | + |
| 22 | +## System Requirements |
| 23 | + |
| 24 | +- macOS 11.0 or later |
| 25 | +- Xcode 13.0 or later (for development) |
| 26 | + |
| 27 | +## Installation |
| 28 | + |
| 29 | +### Build from Source |
| 30 | + |
| 31 | +1. Clone the repository: |
| 32 | +```bash |
| 33 | +git clone https://github.com/iOSDevLog/Hash |
| 34 | +cd Hash |
| 35 | +``` |
| 36 | + |
| 37 | +2. Open the project with Xcode: |
| 38 | +```bash |
| 39 | +open Hash.xcodeproj |
| 40 | +``` |
| 41 | + |
| 42 | +3. Build and run the project in Xcode (⌘+R) |
| 43 | + |
| 44 | +## Usage |
| 45 | + |
| 46 | +### Basic Operations |
| 47 | + |
| 48 | +1. **Launch the Application**: Double-click the app icon or launch from Launchpad |
| 49 | + |
| 50 | +2. **Add Files**: |
| 51 | + - Click the "Select Files" button to choose files |
| 52 | + - Or drag files directly to the application window |
| 53 | + |
| 54 | +3. **Select Hash Algorithm**: |
| 55 | + - Check the desired hash algorithms in the right panel |
| 56 | + - Supports MD5, SHA-1, CRC32 |
| 57 | + |
| 58 | +4. **Start Calculation**: |
| 59 | + - Click the "Start Calculation" button |
| 60 | + - Or calculation starts automatically after adding files |
| 61 | + |
| 62 | +5. **Copy Results**: |
| 63 | + - Click any hash value to copy to clipboard |
| 64 | + - Supports copying individual hash values or all results |
| 65 | + |
| 66 | +### Advanced Features |
| 67 | + |
| 68 | +- **Batch Processing**: Add multiple files for simultaneous batch calculation |
| 69 | +- **Progress Display**: Real-time calculation progress display |
| 70 | +- **File Management**: Support for clearing individual files or all files |
| 71 | +- **Result Export**: Copy all calculation results |
| 72 | + |
| 73 | +## Technical Architecture |
| 74 | + |
| 75 | +### Core Technologies |
| 76 | + |
| 77 | +- **SwiftUI**: Modern user interface framework |
| 78 | +- **CryptoKit**: Apple's official cryptographic framework for SHA-1 calculation |
| 79 | +- **Foundation**: For MD5 and file operations |
| 80 | +- **UniformTypeIdentifiers**: File type identification |
| 81 | + |
| 82 | +### Project Structure |
| 83 | + |
| 84 | +``` |
| 85 | +Hash/ |
| 86 | +├── Hash/ |
| 87 | +│ ├── ContentView.swift # Main interface view |
| 88 | +│ ├── HashApp.swift # Application entry point |
| 89 | +│ ├── Assets.xcassets/ # Application resources |
| 90 | +│ │ └── AppIcon.appiconset/ # Application icon |
| 91 | +│ ├── Hash.entitlements # Application permissions |
| 92 | +│ └── *.lproj/ # Multilingual localization files |
| 93 | +├── HashTests/ # Unit tests |
| 94 | +└── HashUITests/ # UI tests |
| 95 | +``` |
| 96 | + |
| 97 | +### Hash Algorithm Implementation |
| 98 | + |
| 99 | +- **MD5**: Implemented using CommonCrypto framework |
| 100 | +- **SHA-1**: Implemented using CryptoKit framework |
| 101 | +- **CRC32**: Custom implementation using standard CRC32 polynomial |
| 102 | + |
| 103 | +## Development |
| 104 | + |
| 105 | +### Environment Setup |
| 106 | + |
| 107 | +1. Install Xcode 13.0 or later |
| 108 | +2. Ensure macOS version is 11.0 or later |
| 109 | +3. Clone the project and open in Xcode |
| 110 | + |
| 111 | +### Build Project |
| 112 | + |
| 113 | +```bash |
| 114 | +# Build using Xcode command line tools |
| 115 | +xcodebuild -project Hash.xcodeproj -scheme Hash -configuration Debug build |
| 116 | + |
| 117 | +# Or use shortcut ⌘+B in Xcode |
| 118 | +``` |
| 119 | + |
| 120 | +### Run Tests |
| 121 | + |
| 122 | +```bash |
| 123 | +# Run unit tests |
| 124 | +xcodebuild test -project Hash.xcodeproj -scheme Hash -destination 'platform=macOS' |
| 125 | + |
| 126 | +# Or use shortcut ⌘+U in Xcode |
| 127 | +``` |
| 128 | + |
| 129 | +## Localization |
| 130 | + |
| 131 | +The application supports the following 22 languages: |
| 132 | + |
| 133 | +### Asian Languages |
| 134 | +- 🇨🇳 中文(简体)(Chinese Simplified) |
| 135 | +- 🇹🇼 中文(繁体)(Chinese Traditional) |
| 136 | +- 🇯🇵 日本語 (Japanese) |
| 137 | +- 🇰🇷 한국어 (Korean) |
| 138 | +- 🇹🇭 ไทย (Thai) |
| 139 | +- 🇻🇳 Tiếng Việt (Vietnamese) |
| 140 | +- 🇮🇳 हिन्दी (Hindi) |
| 141 | +- 🇮🇩 Bahasa Indonesia (Indonesian) |
| 142 | +- 🇲🇾 Bahasa Melayu (Malay) |
| 143 | + |
| 144 | +### European Languages |
| 145 | +- 🇺🇸 English |
| 146 | +- 🇩🇪 Deutsch (German) |
| 147 | +- 🇫🇷 Français (French) |
| 148 | +- 🇪🇸 Español (Spanish) |
| 149 | +- 🇮🇹 Italiano (Italian) |
| 150 | +- 🇵🇹 Português (Portuguese) |
| 151 | +- 🇳🇱 Nederlands (Dutch) |
| 152 | +- 🇸🇪 Svenska (Swedish) |
| 153 | +- 🇳🇴 Norsk (Norwegian) |
| 154 | +- 🇩🇰 Dansk (Danish) |
| 155 | +- 🇫🇮 Suomi (Finnish) |
| 156 | +- 🇵🇱 Polski (Polish) |
| 157 | +- 🇨🇿 Čeština (Czech) |
| 158 | +- 🇭🇺 Magyar (Hungarian) |
| 159 | +- 🇬🇷 Ελληνικά (Greek) |
| 160 | +- 🇹🇷 Türkçe (Turkish) |
| 161 | +- 🇺🇦 Українська (Ukrainian) |
| 162 | +- 🇷🇴 Română (Romanian) |
| 163 | +- 🇧🇬 Български (Bulgarian) |
| 164 | +- 🇸🇰 Slovenčina (Slovak) |
| 165 | +- 🇸🇮 Slovenščina (Slovenian) |
| 166 | +- 🇭🇷 Hrvatski (Croatian) |
| 167 | +- 🇷🇸 Српски (Serbian) |
| 168 | +- 🇷🇺 Русский (Russian) |
| 169 | + |
| 170 | +### Middle Eastern Languages |
| 171 | +- 🇸🇦 العربية (Arabic) |
| 172 | +- 🇮🇱 עברית (Hebrew) |
| 173 | + |
| 174 | +### Adding New Languages |
| 175 | + |
| 176 | +1. Select the project in Xcode |
| 177 | +2. Add a new language in the "Localizations" section |
| 178 | +3. Translate the strings in the `Localizable.strings` file |
| 179 | + |
| 180 | +## Contributing |
| 181 | + |
| 182 | +Issues and Pull Requests are welcome! |
| 183 | + |
| 184 | +### Contribution Guidelines |
| 185 | + |
| 186 | +1. Fork the project |
| 187 | +2. Create a feature branch (`git checkout -b feature/AmazingFeature`) |
| 188 | +3. Commit your changes (`git commit -m 'Add some AmazingFeature'`) |
| 189 | +4. Push to the branch (`git push origin feature/AmazingFeature`) |
| 190 | +5. Create a Pull Request |
| 191 | + |
| 192 | +## License |
| 193 | + |
| 194 | +This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. |
| 195 | + |
| 196 | +## Changelog |
| 197 | + |
| 198 | +### v1.0.0 |
| 199 | +- ✨ Initial release |
| 200 | +- 🔐 Support for MD5, SHA-1, CRC32 hash algorithms |
| 201 | +- 📁 Support for batch file processing |
| 202 | +- 🎯 Support for drag & drop operations |
| 203 | +- 🌍 Support for multilingual interface |
| 204 | +- 🎨 Modern SwiftUI interface |
| 205 | + |
| 206 | +## Contact |
| 207 | + |
| 208 | +For questions or suggestions, please contact us through: |
| 209 | + |
| 210 | +- Submit Issues: [GitHub Issues](https://github.com/iOSDevLog/Hash/issues) |
| 211 | +- Project Homepage: [GitHub Repository](https://github.com/iOSDevLog/Hash) |
| 212 | + |
| 213 | +--- |
| 214 | + |
| 215 | +**Hash** - Making file hash calculation simple and efficient 🚀 |
0 commit comments